Javascript 如何收集敲除观测值以放入JSON?

Javascript 如何收集敲除观测值以放入JSON?,javascript,knockout.js,Javascript,Knockout.js,我真的,真的不明白了。我正在尝试使用Knockout开发一个接口,但是尝试使用“toJSON”会让我头疼 问题如下: 我有一个FormViewModel。此表单包含关于表单本身的逻辑和元数据(可观察) 我有一个FormSection,它只有两个可见项 我有删除,也只有2个观察值 我想将其AJAX到接收JSON对象的PHP文件中,但我不知道如何从这里开始。我只想要一些可观察的东西,不是所有的。我还希望能够从Ajax调用(使用JSON)加载初始状态 以下是我的代码的相关部分: // Th

我真的,真的不明白了。我正在尝试使用Knockout开发一个接口,但是尝试使用“toJSON”会让我头疼

问题如下:

  • 我有一个FormViewModel。此表单包含关于表单本身的逻辑和元数据(可观察)
  • 我有一个FormSection,它只有两个可见项
  • 我有删除,也只有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有一些可观察的对象,一些功能,等等。这就是我到目前为止得到的:(为了可读性,我删除了函数体)

如果我想保存相关的观测值,我不知道如何继续。例如:我不需要
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;
}
我制作了一把小提琴样品


有关更多信息和示例,请参见

要控制在使用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;
}
我制作了一把小提琴样品


有关更多信息和示例,请参见

您可能不希望从视图模型中删除字段,而是希望删除数据的实际副本。。。您缺少了关键部分。这就是它所做的,它从传递给ko.toJSON()的参数的副本中删除字段。请注意,在fiddle中,即使在ko.toJSON()函数中删除了greeter变量,它仍然会显示。请使用ko.mapping.toJS(model,mappingParms)方法,并在映射参数的属性中使用(字符串)数组填充“ignore”属性将对象映射回JS时希望忽略的PropertyNames。您可能不希望从视图模型中删除字段,但希望删除数据的实际副本。。。您缺少了关键部分。这就是它所做的,它从传递给ko.toJSON()的参数的副本中删除字段。请注意,在fiddle中,即使在ko.toJSON()函数中删除了greeter变量,它仍然会显示。请使用ko.mapping.toJS(model,mappingParms)方法,并在映射参数的属性中,使用将对象映射回JS时希望忽略的(字符串)PropertyNames数组填充“ignore”属性。