我有一个商店和一个数组。如果该记录的值与数组中的值匹配,我想从商店中删除记录。以下是我正在尝试的代码,但它不起作用。任何人都可以建议正确的方法吗?
'存储'是实际商店和' filterItems'是我要从' store'。
中删除的记录数组 store.each(function (record) {
for (var i = 0; i < filterItems.length; i++) {
if (record.get('ItemId') === _filterItems[i].get('ItemId')) {
itemIndex = store.data.indexOf(record);
store.removeAt(itemIndex );
}
}
});
答案 0 :(得分:2)
不确定您的代码,因为我不知道所有变量。虽然建议使用store.getRange()fn并通过for循环遍历数组。它的性能更好。
var storeItems = store.getRange(),
i = 0;
for(; i<storeItems.length; i++){
if(Ext.Array.contains(filterItemIds, storeItems[i].get('id')))
store.remove(store.getById(storeItems[i].get('id')));
}
这是我现在尝试的一个例子,效果很好。
答案 1 :(得分:1)
尝试使用商店的移除方法(docs)
store.remove(filterItems);
答案 2 :(得分:1)
var indexes = [], i = 0;
dataviewStore.each(function(item, index){
if(item) {
if(item.data.columnId == columnId) {
indexes[i++] = index;
}
}
}, this);
dataviewStore.remove(indexes);
这是我的示例,如果您的记录与值匹配,则在存储所有项目的索引并删除它们之后存储该项目的索引。 否则你必须使用for循环并从数组的末尾删除它们。