如何收集Knockout可观察性以放入JSON
How to gather Knockout observables to put in JSON?
我真的,真的再也不明白了。我正在尝试使用Knockout开发一个接口,但尝试"toJSON"会让我头疼。
问题如下:
- 我有一个FormViewModel。该表单包含关于表单本身的逻辑和元数据(可观察数据)
- 我有FormSection,它只有2个可观察器
- 我有删除,也只有2个可观察
我想将其AJAX到一个接收JSON对象的PHP文件中,但我不知道如何从这里开始。我只想要一些可观察性,而不是全部。我还希望能够通过Ajax调用(使用JSON)加载初始状态。
以下是我的代码的相关部分:
// This only has some observables
var FormSection = function(number)
{
var self = this;
this.title = ko.observable('Section ' + number);
this.selectedPageStyle = ko.observable();
};
// Only observable / computed
var Deletion = function(page)
{
var self = this;
// reference to a just deleted page, to make 'undeletion' possible
this.page = page;
this.pageTitle = ko.computed(function(){ return self.page.title() });
};
到目前为止还不错,但我的ViewModel具有一些可观察性、一些功能等。这就是我迄今为止所拥有的:(为了可读性,我删除了函数体)
var FormViewModel = function(data)
{
var self = this;
this.pages = ko.observableArray([]);
this.deletions = ko.observableArray([]);
this.name = ko.observable();
this.description = ko.observable();
this.availablePageStyles = ko.observableArray(['Header', 'Fields', 'Signatures']);
this.hasPages = ko.computed(function(){}, this);
this.numberOfPages = ko.computed(function(){}, this);
self.selectedPage = ko.observable( );
self.isPageSelected = function(page) {};
self.clearPage = function(data, event) {};
this.save = function() {
$.ajax("x", {
// WHAT TO DO?!
data: { data: ko.toJSON(this)},
type: "post",
//success: function(result) { alert(result) },
error : function(jqXHR, textStatus, errorThrown) { alert(textStatus + errorThrown)}
});
};
$.getJSON("x", function(allData) {
// How to populate back?!
});
this.addPage = function(data, event){}
this.removePage = function(page){}
this.unremovePage = function(deletion){}
};
如果我想保存相关的可观察性,我不知道如何进行。例如:我不需要self.selectedPage
。我只把它用于排序。
- 我在这里使用映射吗
- 如何映射相关的可观察性
- 如何将其放入JSON中
- 如何从服务器接收的JSON"映射回"
要控制使用ko.toJSON时转换为JSON的内容,可以通过执行来重载函数
viewModel.prototype.toJSON = function(){
var copy = this;
delete copy.//whatever variables you don't want to return to server here
//any other variables you want to not return
return copy;
}
我组装了一把样品小提琴http://jsfiddle.net/Rynan/hA4Kz/.
有关更多信息和示例,请参阅http://www.knockmeout.net/2011/04/controlling-how-object-is-converted-to.html
相关文章:
- 如何收集Knockout可观察性以放入JSON
- 如何从具有动态可观察属性的淘汰对象中获取 JSON 字符串
- 在隐藏值上调用 jQuery .trigger('change') 会破坏与 KNOCKOUT 相关的可观察性
- Knockout.js性能-有多少可观察性
- 更改可观察数组会更改自定义绑定处理程序knockoutjs的可见性
- Knockout.js用单个json对象绑定一个可观察对象
- Knockout.js:在可选定义的值上计算可观察性
- 如何使用ES6在Ember中声明可观察性或计算属性
- 从 JSON 响应创建可观察的敲除数组
- RXJS5 - 按每个对象包含的可观察性过滤对象数组
- 将 Json 数组挖空映射到可观察数组得到错误
- Angular2 Http 请求返回没有映射方法的可观察性
- 在数据绑定表达式中,何时使用或不使用带可观察性的括号
- knockout.js没有从json映射可观察数组
- 在knockoutjs中计算的可观察性;更改时不更新
- 如何增加knockout.js的可观察性
- 如何通过多个$.ajax调用实现异步计算可观察性
- 敲除绑定顺序/不带可观察性
- knockoutjs:计算级联数组(复杂视图模型)中的可观察性和this指针
- 使用计算的可观察性的对象范围