假设我有一个类似于下面的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"}}
Knockout映射不会忽略a.a1。这是插件中的错误吗?它正确地忽略了' b'但为什么不' a.a1'?
答案 0 :(得分:1)
ignore
数组中的名称应该是属性的名称,无论它在对象中的级别如何。你必须使用:
{ ignore: [ "a1", "b" ] }
答案 1 :(得分:1)
我有类似的忽略列表,其中有些" ID"必须被压制而其他人则被保留下来。我想扩展答案,以便使用fromJS的人可以看到特定的忽略工作
var data1 = {
invoice: { id: 'a1', name: 'a2', type: 'a3'},
shipping: "b1",
id:"c1"
};
var resultvm = ko.mapping。 fromJS (data1,{'忽略':[" invoice.id", "船舶"]}); ko.applyBindings(resultvm);
将为您提供如下输出。请注意,只有发票的ID已被忽略。
{"发票" {"名称":" A2""类型":" A3"} " ID":" C1"}
但toJSON给出了
代码:
var result = ko.mapping。 toJSON (data1,{ignore:[" invoice.id", "运输"]});
结果:
{"发票" {" ID":" A1""名称":" A2&#34 ;, "类型":" A3"}" ID":" C1"}
这是我的jsFiddle:https://jsfiddle.net/3b17r0ys/8/