我真的,真的不明白了。我正在尝试使用 Knockout 开发接口,但尝试“toJSON”让我很头疼。
问题如下:
- 我有一个 FormViewModel。此表单包含有关表单本身的逻辑和元数据(可观察数据)。
- 我有 FormSection,它只有 2 个 observables。
- 我有删除,也只有 2 个 observables。
我想 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){}
};
如果我想保存相关的observables,我不知道如何进行。例如:我不需要self.selectedPage
. 我只用它来排序。
- 我在这里使用映射吗?
- 如何映射相关的 observables?
- 我如何把它放在 JSON 中?
- 如何从我从服务器收到的 JSON 中“映射回来”?