2012-03-15 73 views
42

我在我的視圖模型中有一個observableArray。在創建虛擬機後,我希望完全替換數據observableArray。下面是我如何做它:替換Knockout.js中的所有元素observableArray

//Initial Setup 
var vm = {}; 
vm.roles = ko.observableArray([]); 
ko.applyBindings(vm); 


//....replace array later on.... 
vm.roles(["1", "2"]); 

這似乎是工作的罰款,但我很擔心,如果這是不正確的,可能會導致內存泄漏。任何人都可以符合,如果這是更新現有observableArray的首選方法,假設您希望替換其所有數據?

我注意到observableArray確實有removeAll()方法,並想知道是否需要調用乾淨地做這件事,或者如果我對我正在做的事情很好?

回答

38

您正在使用的技術是完全替換observableArray中的數據的推薦方法。 observableArray實際上只是一個正常的observable,爲有用的陣列操作添加了額外的功能,這些操作作用於底層陣列並觸發通知。

+3

。你們可有配套文件/鏈接你的陳述? [當然,你是Knockmeout先生本人(O;) – Kristopher 2014-08-11 13:22:04

-4

我發現推薦的方法在IE9或更低版本中不起作用。相反,我當你說「推薦的方法」從上http://skeptics.stackexchange.com/踢回答問題我的訓練重新創建對象,

vm.roles = ko.observableArray(["1","2"]) 
+0

我想知道這是否因爲更新版本的Knockout而發生了變化......你使用的是什麼版本? – 2013-10-11 13:49:00

+14

如果你替換整個對象,觀察者將不會被通知,對嗎? – 2013-12-23 02:51:35

相關問題