敲除映射到 JSON - 不能忽略嵌套的子项
Knockout Mapping toJSON - cannot ignore nested child
假设我有一个如下所示的 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"}}
敲除映射并未忽略 a.a1。这是插件中的错误吗?它正确地忽略了 'b' 但为什么不 'a.a1'?
在 ignore
数组中找到的名称应该是 属性 的名称,无论它在对象中的级别如何。您必须使用:
{ ignore: [ "a1", "b" ] }
我有类似的忽略列表,其中一些 "ids" 必须被抑制,而其他则保持原样。我想扩展答案,以便使用 fromJS 的人可以看到特定的忽略是有效的
var data1 = {
invoice: { id: 'a1', name: 'a2', type: 'a3'},
shipping: "b1",
id:"c1"
};
var resultvm = ko.mapping.fromJS(data1, {'ignore':["invoice.id",
"ship"]}); ko.applyBindings(resultvm);
将为您提供如下输出。请注意,只有发票的 ID 被忽略了。
{"invoice":{"name":"a2","type":"a3"},"id":"c1"}
但是toJSON给出
代码:
var result = ko.mapping.toJSON(data1, { ignore: ["invoice.id",
"shipping"] });
结果:
{"invoice":{"id":"a1","name":"a2","type":"a3"},"id":"c1"}
这是我的 jsFiddle:https://jsfiddle.net/3b17r0ys/8/
假设我有一个如下所示的 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"}}
敲除映射并未忽略 a.a1。这是插件中的错误吗?它正确地忽略了 'b' 但为什么不 'a.a1'?
在 ignore
数组中找到的名称应该是 属性 的名称,无论它在对象中的级别如何。您必须使用:
{ ignore: [ "a1", "b" ] }
我有类似的忽略列表,其中一些 "ids" 必须被抑制,而其他则保持原样。我想扩展答案,以便使用 fromJS 的人可以看到特定的忽略是有效的
var data1 = {
invoice: { id: 'a1', name: 'a2', type: 'a3'},
shipping: "b1",
id:"c1"
};
var resultvm = ko.mapping.fromJS(data1, {'ignore':["invoice.id", "ship"]}); ko.applyBindings(resultvm);
将为您提供如下输出。请注意,只有发票的 ID 被忽略了。
{"invoice":{"name":"a2","type":"a3"},"id":"c1"}
但是toJSON给出
代码:
var result = ko.mapping.toJSON(data1, { ignore: ["invoice.id", "shipping"] });
结果:
{"invoice":{"id":"a1","name":"a2","type":"a3"},"id":"c1"}
这是我的 jsFiddle:https://jsfiddle.net/3b17r0ys/8/