2013-01-05 42 views
0

我想從我的應用程序中的itemDataSource中刪除所有項目。 itemDataSource被綁定到一個列表視圖。爲什麼不清除這個itemDataSource?

我已經成功地刪除時,它的點擊在列表視圖中的單個項目,但刪除所有項目引起了我的問題:(

這是我以前從itemDataSource刪除單個項目的代碼:

//remove the clicked playlist item 
var ds = document.getElementById("PlaylistListView").winControl.itemDataSource; 
ds.beginEdits(); 
ds.remove(ds.itemFromIndex(eventInfo.detail.itemPromise._value.index)._value.key); 
ds.endEdits(); 

這是我一直試圖寫入刪除所有項目代碼:

var ds = document.getElementById("PlaylistListView").winControl.itemDataSource; 
ds.beginEdits(); 
console.log(ds._list._keys); 
console.log("There are " + ds._list._keys.length + " items in this list"); 
for (var i = 0; i < ds._list._keys.length; i++) { 
    ds.remove(ds._list._keys[i]); 
    console.log("Item: " + ds._list._keys[i] + " has been removed from the list"); 
} 
ds.endEdits(); 

這是我收到的控制檯輸出,當我運行這款C頌:

1,2,3,4,5,6,7,8,9,10,11 
There are 11 items in this list 
Item: 2 has been removed from the list 
Item: 4 has been removed from the list 
Item: 6 has been removed from the list 
Item: 8 has been removed from the list 
Item: 10 has been removed from the list 
Item: undefined has been removed from the list 

爲什麼只被刪除一些項目?輸出如預期的那樣,但是導致項目1,3,5,7,9, and 11不能被刪除的原因是什麼?我注意到序列中有一個模式,每次都是2。

任何幫助,將不勝感激:)

回答

2

這是因爲你從列表中刪除的東西,然後重新編制了進去。當您取下物品6時,物品7變爲物品6,物品8變爲物品7,因此您不會移除(原始)物品7,而是移除(原始)物品8。

如果你只是刪除索引0,直到他們沒有項目,它應該工作得更好。還要看清單上的clear()以支持清除它。

此外,我注意到你正在使用很多內部狀態(_-前綴項) - 你可能想在那裏小心,因爲這些可能會隨時改變。

相關問題