从商店中删除多条记录的最佳方法是什么? ExtJS的

时间:2016-01-09 16:47:52

标签: javascript extjs extjs4 extjs5

使用extjs条件删除多条记录的最佳方法是什么?

例如:

var store = Ext.create('Ext.data.Store', {
    data: [
        {name: 'Ed', age: 21},
        {name: 'Tommy', age: 15},
        {name: 'Aaron', age: 18},
        {name: 'John', age: 22}
    ]
});

我想要删除年龄<39岁的记录。小于20(在这种情况下,&#39; Tommy&#39;和#39; Aaron&#39;)。这个问题可能与如何找到多条记录的情况相同。

4 个答案:

答案 0 :(得分:5)

仅使用公开 API,并记住您可能不希望直接过滤商店或逐个删除项目,因为这会在任何连接的UI组件上触发不必要的重绘 - 您可以使用以下内容:

var subCollection = store.getData().createFiltered(function(item){
    return item.get('age') < 20;
});

store.remove(subCollection.getRange());

答案 1 :(得分:2)

您可能不想要removeAll,但只是迭代并删除匹配的

for ( var i = store.data.length; i--; ) {
    if ( store.data[i].age > 20 ) store.removeAt(i);
}

答案 2 :(得分:2)

store.remove(
    store.queryBy(function(record) {
        ...
    }).getRange()
)

适用于4,5和6。

答案 3 :(得分:0)

另一种方法:

// get records..

        records.forEach(function (record) {
            if (record.getData().age < 20) {
                store.remove(record);
            }
        });