我在屏幕上有一个listview div,我已成功添加itemDataSource
var lettersList = new WinJS.Binding.List(jsonArrayForClearance);
var list_ = document.getElementById("prodListView").winControl;
list_.itemDataSource = lettersList.dataSource;
list_.itemTemplate = document.getElementById("tileTemplate");
list_.forceLayout();
现在,在每个项目中,我添加了一个自定义输入类型供用户指定(使用模板)。我想遍历列表中的所有项目并获取数组中该输入类型的值。 我怎么能这样做?
编辑:我的问题是访问列表项中声明的自定义输入类型。因此,我们使用以下代码来访问名为“inpT”的任何输入类型
document.getElementById('inpT');
但如何从列表项访问相同的内容?我可以使用以下代码(由user2608614建议)
var listView = document.getElementById("prodListView").winControl;
var list = listView.itemDataSource.list;
for (var i = 0; i < list.length; i++) {
var item = list.getAt(i);
item.getElementById('inpT');
}
答案 0 :(得分:1)
您可以遍历列表元素,如下所示:
var listView = document.getElementById("prodListView").winControl;
listView.itemDataSource.getCount()
.done(function(count) {
for (var i = 0; i < count ; i++) {
listView.itemDataSource.itemFromIndex(i)
.done(function (item) {
//***item will contain your property
});
}
});
这不是最好的解决方案,因为它很难将承诺链接起来,我也在寻找更好的解决方案。但它确实有效。
答案 1 :(得分:0)
由于你正在使用Binding.List,你可以像数组一样迭代它。
var listView = document.getElementById("prodListView").winControl;
var list = listView.itemDataSource.list;
for (var i = 0; i < list.length; i++) {
var item = list.getAt(i);
// do something with this item
}
唯一要记住的是它不支持[],而是必须使用.getAt()和.setAt()。