2011-11-03 147 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

是的,這是正確的,通過將你正在評估的()放入基本數組並跳過綁定。 –