Javascript 敲除映射覆盖计算的观测值,这是故意的吗?
例如,您有如下设置:Javascript 敲除映射覆盖计算的观测值,这是故意的吗?,javascript,knockout.js,knockout-mapping-plugin,Javascript,Knockout.js,Knockout Mapping Plugin,例如,您有如下设置: var model = function() { this.base = ko.observable("Initial"); this.dependent = ko.computed(function() { return this.base() + ", computed"; }, this); }; var vm = new model(); 此时,vm是对象{base:observable(),dependent:depen
var model = function() {
this.base = ko.observable("Initial");
this.dependent = ko.computed(function() {
return this.base() + ", computed";
}, this);
};
var vm = new model();
此时,vm
是对象{base:observable(),dependent:dependentObservable()}
(如预期的那样)
但是,一旦我跑步:
ko.mapping.fromJS({base: "hello", dependent: "hi"}, {}, vm)
vm
变成Object{base:observable(),依赖:“hi”,\uuuuu ko\u mapping\uuuuuu:Object}
dependent
不再是可观察的,我希望它不会被触及
这是故意的吗?如果是,这背后的理由是什么?相依观测值不应该被排除在映射之外吗
这个问题的原因是,我正在使用ko.mapping.toJS()将
vm
转换为一个JavaScript对象
(正如预期的那样,它提供了一个依赖的
属性)
然后,稍后,我将使用ko.mapping.fromJS(),如上所示。此组合覆盖了vm
的ko.computed()属性
我可以想出以下解决方案:
- 显式指定映射过程中要忽略的
相关
ko.mapping.fromJS({base: "hello", dependent: "hi"}, {'ignore': "dependent"]}, vm)
- 使
可写(仅适用于同名者)相关
杂项。信息
- 这实际上覆盖了dependentObservable()(据我所知)
this.dependent = ko.computed({
read: function() {
return this.base() + ", computed";
},
write: function() {},
owner: this
});