2013-07-09 62 views
26

我想在每次從我的服務器獲取數據時在我的observablearray中丟棄數據。removeAll vs在knockoutjs中用[]清空數組

是什麼在功能

self.myArray([]); 

之間VS

self.myArray.removeAll(); 
+0

第一個創建一個新的觀察到的,所有訂閱舊丟失。 – DCoder

+0

@DCoder對不起,我犯了一個錯字...請再看一遍。 – msfanboy

+0

你可以閱讀Knockout的源代碼,看看它是如何實現的。他們都清除數組,唯一明顯的區別是他們返回的內容 - 第一個選項返回observable本身,第二個返回舊值。 – DCoder

回答

50

但從最終結果點有兩個電話之間沒有區別的差異,所以你最終會與myArray含沒有元素。

然而,有一個小的差異(如果你不關心不同的返回值):

self.myArray([]); 

與新創建的空數組替換底層的數組實例

雖然

self.myArray.removeAll(); 

意志去除潛在的數組,但所有項目將保持數組實例

所以,如果你有多個ko.observableArray使用相同的襯墊陣列可以看到兩個呼叫之間的differnce:

演示JSFiddle.

+0

感謝您的示例。 – msfanboy

+0

從內存的角度來看,removeAll()更好嗎?例如它會釋放所有的內存嗎? –