我正在为我的混合科尔多瓦应用程序使用 Sencha touch v 2.3.0。我们如何循环通过 Sencha 触摸数据存储并更新每条记录?
for (var x = 0 ;x <listStore.data.length;x++){
var record = listStore.getAt(x);
console.log('iterate rec at index:'+x+ ' fav list name:'+record.get('favorite_name')+'orderInd:'+record.get('order_index'));
record.set('order_index',x);
record.dirty = true;
listStore.sync();
});
这将仅正确更新第一条记录,之后当我更新第二条记录时,仍然引用第一条记录。此外,我已经对字段 order_index 作为 ASC 的数据存储应用了排序。此数据存储用于我已启用拖动和排序的列表。我必须执行此更新 ondragsort 功能
onDragSort:function(list, row, from, to) {
var listStore = Ext.getStore('FavoriteListStore');
for (x = 0 ;x <listStore.data.length;x++){
console.log('before drag fav list name:'+listStore.data.items[x].get('favorite_name')+'orderInd:'+listStore.data.items[x].get('order_index'));
}
for (var x = 0 ;x <listStore.data.length;x++){
var record = listStore.getAt(x);
console.log('iterate rec at index:'+x+ ' fav list name:'+record.get('favorite_name')+'orderInd:'+record.get('order_index'));
record.set('order_index',x);
record.dirty = true;
listStore.sync();
});
}
最初我最喜欢的列表商店有以下数据
name:Steel order_index:0
name:Sample Favorite List order_index:1
name:Electrical Essentials order_index:2
以上数据显示在列表中,现在当我在列表中拖动第三行以将其置于顶部时。下面是我尝试通过迭代设置 order_index 时的控制台
拖动前收藏列表名称:Electrical Essentials orderInd:2 拖动前收藏列表名称:Steel orderInd:0 拖动前收藏列表名称:Sample Favorite List orderInd:1
通过迭代设置 order_index 后,以下是数据存储上的数据,同时迭代在索引处迭代 rec:0 fav 列表名称:Electrical EssentialsorderInd:2 在索引处迭代rec:1 fav 列表名称:Electrical EssentialsorderInd:0 在索引处迭代rec:2 fav 列表名称:电气必需品orderInd:1
我对为什么在进行迭代和更新 orderInd 时未正确获取记录感到困惑。在设置之前,记录正确获取的位置