例如,我们有复杂的对象:
var complex = {a: 1, b: 2, c: {c1: 1, c2: 2}};
我们希望它可以观察:
var observableComplex = ko.mapping.fromJS(complex);
问题:为什么我们得到c变量不可观察?在手册中我看到了一些,这是通过设计完成的,我想知道为什么?
a - observable,
b - observable
c - object:
c1 - observable
c2 - observable
答案 0 :(得分:0)
没有可以映射的'c'对象...如果你想要观察它,你需要为它创建一个自定义映射并定义你的对象。
即
var Complex = function (data) {
var self = this;
self.c = ko.mapping.fromJS(data.c);
}
var CustomMapping = {
create: function(options) {
return new Complex(options.data);
}
}
var observableComplex = ko.mapping.fromJS(complex, CustomMapping);
简而言之,这会创建一个新的Complex对象,然后在创建observableComplex时挖掘并映射'c'的数据。对于我的自定义对象,我有很多这样的情况来处理嵌套对象。