从ExtJS存储中删除数组中存在的记录
我有一个存储和一个数组。如果记录的值与数组中的值匹配,我想从存储中删除记录。下面是我正在尝试的代码,但它不起作用。有人能建议正确的方法吗 “store”是实际存储,“filterItems”是我要从“store”中删除的记录数组从ExtJS存储中删除数组中存在的记录,extjs,extjs4.2,Extjs,Extjs4.2,我有一个存储和一个数组。如果记录的值与数组中的值匹配,我想从存储中删除记录。下面是我正在尝试的代码,但它不起作用。有人能建议正确的方法吗 “store”是实际存储,“filterItems”是我要从“store”中删除的记录数组 store.each(function (record) { for (var i = 0; i < filterItems.length; i++) { if (record.get('ItemId') === _
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 );
}
}
});
store.每个函数(记录){
对于(变量i=0;i
尝试使用存储区()的删除方法
我不确定你的代码,因为我不知道所有的变量。尽管建议使用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')));
}
var storeItems=store.getRange(),
i=0;
为了
这是我的示例,如果您的记录与值匹配,则在存储所有项的索引后存储该项的索引并将其删除。
否则,您必须使用for循环并将它们从数组末尾删除。getRange()返回的数组中元素的索引似乎与store中的索引不同?因为如果您使用store.removeAt(i),它并不总是删除正确的元素。
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')));
}
var indexes = [], i = 0;
dataviewStore.each(function(item, index){
if(item) {
if(item.data.columnId == columnId) {
indexes[i++] = index;
}
}
}, this);
dataviewStore.remove(indexes);