如何使用KnockoutJS删除不需要的JSON节点

如何使用KnockoutJS删除不需要的JSON节点,json,knockout.js,Json,Knockout.js,我在发布json数据时遇到问题,因为我不知道如何在ajax回发过程中删除一个json节点(在本例中为ServiceOptions) 首先,这是我的HTML: <h3>Company Profile:</h3> <ol style="list-style:none;"> <li> Company Name<br /> <input id="CompanyName" type="text" da

我在发布json数据时遇到问题,因为我不知道如何在ajax回发过程中删除一个json节点(在本例中为ServiceOptions)

首先,这是我的HTML:

<h3>Company Profile:</h3>
<ol style="list-style:none;">
    <li>
        Company Name<br />
        <input id="CompanyName" type="text" data-bind="value:CompanyName" />
    </li>
    <li>
        Service Type<br />
        <select id="ServiceType" data-bind="options:ServiceOptions,optionsText:'text',optionsValue:'value',value:ServiceType,optionsCaption:'Choose....'">
        </select>
    </li>
    <li>
        Street<br />
        <input id="Street1" type="text"  data-bind="value:Street1" /><br />
        <input id="Street2" type="text"  data-bind="value:Street2" /><br />
        <input id="Street3" type="text"  data-bind="value:Street3" />
    </li>
    <li>
        Suburb<br />
        <input id="Suburb" type="text" data-bind="value:Suburb" />
    </li>
    <li>
        Post Code<br />
        <input id="PostCode" type="text" data-bind="value:PostCode" />
    </li>
    <li>
        State<br />
        <input id="State" type="text" data-bind="value:State" />
    <li>
        Telephone<br />
        <input id="Telephone" type="text" data-bind="value:Telephone" />
    </li>
    <li>
        Fax<br />
        <input id="Fax" type="text" data-bind="value:Fax" />
    </li>
    <li>
        Status <input id="IsActive" type="checkbox" data-bind="checked: IsActive" />
    </li>
    <li>
        <button data-bind="click:Update_Click">Update</button>
        <button data-bind="click:Delete_Click">Delete</button>
    </li>
</ol>
当我点击更新按钮时,我得到

“公司名称”:“服务选项”:[{“值”:0,“文本”:“干洗”},{“值”:1,“文本”:“遛狗”}],“街道1”:“街道2”:“街道3”:“郊区”:“邮政编码”:“州”:“电话”:“传真”:“IsActive”:false}

正如您在上面的JSON结果中所看到的,我仍然得到ServiceOptions


知道如何修复它吗?

ko.toJSON
在内部使用
JSON.stringify
可以指定。在这个replacer函数中,您需要为不希望包含在最终JSON中的键(属性名)返回
undefined

this.Update_Click = function () {
    alert(ko.toJSON(self, function(key, value) { 
         if (key == "ServiceOptions") 
             return undefined;
         return value;
    }));
};

如果ServiceOptions不是您模型的一部分-为什么它是您模型的一部分?您可以将其放入另一个对象中。这不是从代码中删除self.ServiceOptions的问题吗?Robert,我需要服务选项来填充html select对象。这在希望输出或保存不一定需要的数据(如下拉项)时非常方便-谢谢!
this.Update_Click = function () {
    alert(ko.toJSON(self, function(key, value) { 
         if (key == "ServiceOptions") 
             return undefined;
         return value;
    }));
};