Sencha touch 如何遍历Ext.dataview.list中的项目列表

Sencha touch 如何遍历Ext.dataview.list中的项目列表,sencha-touch,sencha-touch-2,Sencha Touch,Sencha Touch 2,我目前正在尝试了解如何在ST2的列表中设置要选择的项目。 我发现了以下几点: l.select(0, true); l.select(1, true); var s = l.getStore(); var itemIndicesToSelect = []; for (var i = 0 ; i < s.data.items.length ; i++){ if (arrayContainsValue(toSet, s.data.items[i].data.id)){

我目前正在尝试了解如何在ST2的列表中设置要选择的项目。 我发现了以下几点:

l.select(0, true);
l.select(1, true);
var s = l.getStore();
var itemIndicesToSelect = [];
for (var i = 0 ; i < s.data.items.length ; i++){
    if (arrayContainsValue(toSet, s.data.items[i].data.id)){
        itemIndicesToSelect.push(i);
    }
}

for (var i = 0 ; i < itemIndicesToSelect.length ; i++){
     l.selectRange(itemIndicesToSelect[i], itemIndicesToSelect[i], true);
}
这将选择我列表中的前两项。但是来自服务器的数据是csv格式的字符串,带有列表中要选择的项目的ID

e.g. "4, 10, 15"
所以我现在有这个代码

doSetSelectedValues = function(values, scope) {
    var l = scope.getComponent("mylist");
    var toSet = values.split(",");

    // loop through items in list
    // if item in list has 'id' property matching whatever is in the toSet array then select it.
}
问题是我似乎找不到一种方法来迭代列表中的项,然后检查该项的“id”属性,看看它是否与数组中的项匹配

l.getItems()

似乎不返回项目数组。该列表通过具有“id”和“itemdesc”属性的存储区填充。我只想能够从csv字符串中选择这些项目。我已经搜索了这个Api,我似乎找不到一种方法来迭代列表中的项目并能够检查其支持数据。

Ext.list的项目不是您要查找的项目。
Ext.List
对象下的项目包括:

doSetSelectedValues = function(values, scope) {

    var l = scope.getComponent("mylist"),
        store = l.getStore(),
        toSet = values.split(",");

    Ext.each(toSet, function(id){
        l.select(store.getById(id), true);
    });

}
Ext.create('Ext.List', {
    fullscreen: true,
    itemTpl: '{title}',
    store: theStore,
    **items: [item1, item2]**
});
当然,通常
Ext.List
没有这样的项目。您要查找的是
Ext.Store
项目。
Ext.Store
项目与
Ext.List
中显示的项目顺序完全相同。 要迭代这些项目并在列表中选择相应的项目,请执行以下操作:

l.select(0, true);
l.select(1, true);
var s = l.getStore();
var itemIndicesToSelect = [];
for (var i = 0 ; i < s.data.items.length ; i++){
    if (arrayContainsValue(toSet, s.data.items[i].data.id)){
        itemIndicesToSelect.push(i);
    }
}

for (var i = 0 ; i < itemIndicesToSelect.length ; i++){
     l.selectRange(itemIndicesToSelect[i], itemIndicesToSelect[i], true);
}
var s=l.getStore();
var ItemIndicateStoSelect=[];
对于(var i=0;i
您必须实现函数arrayContainsValue()