Javascript 敲除到JSON的映射-不能忽略嵌套子级
假设我有一个如下所示的viewModelJavascript 敲除到JSON的映射-不能忽略嵌套子级,javascript,knockout.js,knockout-mapping-plugin,Javascript,Knockout.js,Knockout Mapping Plugin,假设我有一个如下所示的viewModel var data = { a: { a1: "a1", a2: "a2" }, b: "b" }; 我想忽略a.a1和b。所以我期望的JSON是 {"a":{a2:"a2"}} 但是,在这样做的时候, var result = ko.mapping.toJSON(data, { ignore: ["a.a1", "b"] }) 我得到了结果= {"a":{"a1":"a1","a2":"a2"}} 敲除映射
var data = {
a: { a1: "a1", a2: "a2" },
b: "b"
};
我想忽略a.a1和b。所以我期望的JSON是
{"a":{a2:"a2"}}
但是,在这样做的时候,
var result = ko.mapping.toJSON(data, { ignore: ["a.a1", "b"] })
我得到了结果=
{"a":{"a1":"a1","a2":"a2"}}
敲除映射不会忽略a.a1。这是插件中的错误吗?它正确地忽略了“b”,但为什么不忽略“a.a1”?在
ignore
数组中找到的名称应该是属性的名称,而不管它在对象中的级别如何。您必须使用:
{ ignore: [ "a1", "b" ] }
我有一个类似的忽略列表,其中一些“ID”必须被抑制,其他的保持不变。我想对答案进行扩展,以便使用fromJS的人可以看到特定的忽略项
var data1 = {
invoice: { id: 'a1', name: 'a2', type: 'a3'},
shipping: "b1",
id:"c1"
};
var resultvm=ko.mapping.fromJS(数据1,{'ignore':[“invoice.id”,
“船舶”]};ko.应用绑定(resultvm)
将为您提供如下输出。请注意,只有发票的id被忽略
{“发票”:{“名称”:“a2”,“类型”:“a3”},“id”:“c1”}
但toJSON提供了
代码:
var result=ko.mapping.toJSON(数据1,{ignore:[“invoice.id”,
“航运”]}
结果:
{“发票”:{“id”:“a1”,“名称”:“a2”,“类型”:“a3”},“id”:“c1”}
这是我的JSFIDLE:完美!因此,这意味着viewmodel中不能有重复的属性名称。我没有意识到映射会施加这样的限制。非常感谢杰夫。我知道这很糟糕:-(