2011-11-03 143 views
2

我有一个自定义绑定,它在init上创建事件处理程序。在这些事件处理程序中,我调用了我的视图模型的函数,该模型更新了我的视图模型属性(这是一个可观察的数组)。knockoutjs,通过自定义绑定修改时未观察到可观察阵列

但是,绑定到此属性的DOM元素不会更新。另外,如果我通过直接调用视图模型的方法来更改视图模型属性,那么DOM元素将被更新correclty。此外,如果使用第一种方法更改属性,则现在视图模型属性包含所有重要信息。

很抱歉,如果这是不明确,这里是小提琴测试:http://jsfiddle.net/8RTjN/67/ 当运行它,选择行(视图模型被更新,但绑定不支持),然后单击添加按钮(修改直接在视图模型属性),现在绑定已正确更新。

所以:我在做什么错了?

回答

4

当你推到selectedRequests您目前有

this.selectedRequests().push(request); 

你不需要()

this.selectedRequests.push(request); 
+0

AAAAH,现在它的工作!非常感谢!如果我理解正确,那是因为它是可观察的数组实现了这个push方法(然后传播到其他绑定)。而当使用property()。push时,它是javascript数组的推送函数(并且不传播)。是对的吗? – joerage

+0

是的,这是正确的,通过将你正在评估的()放入基本数组并跳过绑定。 –