作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从我的应用程序中的 itemDataSource 中删除所有项目。 itemDataSource 绑定(bind)到 ListView 。
当在 ListView 中单击单个项目时,我已成功删除该项目,但删除所有项目给我带来了问题:(
这是我用来从 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();
这是我运行此代码时在控制台中得到的输出:
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, 和 11
未被删除?我注意到序列中有一个模式,每次都是 2。
任何帮助将不胜感激:)
最佳答案
这是因为您要从列表中删除内容,然后重新为其建立索引。当您删除第 6 项时,第 7 项将变为第 6 项,第 8 项将变为第 7 项,因此您不会删除(原始)第 7 项,而是删除(原始)第 8 项。
如果你只是删除索引 0 直到它们不再是项目,它应该会工作得更好。另请查看列表中的clear()以支持清除它。
此外,我注意到您正在使用大量内部状态(_ 前缀的项目)——您可能需要小心,因为这些状态可能随时发生变化。
关于javascript - 为什么这个 itemDataSource 没有被清除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14174546/
我正在尝试从我的应用程序中的 itemDataSource 中删除所有项目。 itemDataSource 绑定(bind)到 ListView 。 当在 ListView 中单击单个项目时,我已成功
我是一名优秀的程序员,十分优秀!