我处于这样的情况:我想要覆盖淘汰对可观察者的set
方法;并举例说明我想要的原因,请参考以下示例代码:
this.magic = ko.observableArray();
// ... inside an Ajax request
var formatted = reduceAndFormat(respone);
this.magic(formatted);
这重复了几次,所以我想在可能定制的可观察的reduceAndFormat
方法中移动set
函数的整个主体。
有办法做到这一点吗?因为在订阅可观察的更新之外没有在文档中看到太多其他内容。
答案 0 :(得分:9)
您可以创建writable computed observable
或许这样的事情:
// private variable
this._magic = ko.observableArray();
// property with getter and setter
this.magic= ko.computed({
read: function(){
return _magic();
},
write: function(value) {
var formatted = reduceAndFormat(value);
this._magic(formatted);
}
});