2013-01-05 43 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()以支持清除它。

此外,我注意到你正在使用很多内部状态(_-前缀项) - 你可能想在那里小心,因为这些可能会随时改变。

相关问题