覆盖observable / observable数组集方法

时间:2012-06-29 09:51:34

标签: knockout.js

我处于这样的情况:我想要覆盖淘汰对可观察者的set方法;并举例说明我想要的原因,请参考以下示例代码:

this.magic = ko.observableArray();

// ... inside an Ajax request
var formatted = reduceAndFormat(respone);
this.magic(formatted);

这重复了几次,所以我想在可能定制的可观察的reduceAndFormat方法中移动set函数的整个主体。

有办法做到这一点吗?因为在订阅可观察的更新之外没有在文档中看到太多其他内容。

1 个答案:

答案 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);
    }
});