Knockout在计算中修改ObservableArray

时间:2014-07-12 06:37:33

标签: javascript knockout.js binding ko.observablearray computed-observable

我正在尝试解决我有一个双向计算observable的问题,并希望将其解析为一个可观察的数组,并将该更改事件冒泡。问题是它似乎没有通知用户。

最好在jsfiddle中显示:http://jsfiddle.net/RHhmY/13/

代码在这里:

function CustomerOverview() {
    var self = this;

    self.contacts = ko.observableArray([]);
    self.v = ko.computed(
        {
            read : function(){
            return "";
            },
             write : function(val){
               self.contacts = ko.observableArray(String(val).split(','));
             }
        }
    );
};



var vm = new CustomerOverview();
ko.applyBindings(vm);

和html:

LENGTH<span data-bind="text: contacts.length"></span><br />
<input type="text" data-bind="value: v">

我尝试了很多事情,包括通知相关observableArray的订阅者,并且长度永远不会更新。

作为一个方面,我非常愿意改变它的构造方式,只需要一些有用的东西。

1 个答案:

答案 0 :(得分:4)

这打破了你的绑定:

write : function(val){
           self.contacts = ko.observableArray(String(val).split(','));
}

您想要更新您的observable而不是重新分配它

write : function(val){
           self.contacts(String(val).split(','));
}