从商店中删除多条记录的最佳方法是什么?扩展程序
What is the best way to remove multiple records from store? extjs
在 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}
]
});
我想删除 'age' 少于 20 的记录(在本例中,'Tommy' 和 'Aaron')。这个问题可能与如何查找条件相同的多条记录相同。
您可能不想要 removeAll
,而只是迭代并删除匹配
的那些
for ( var i = store.data.length; i--; ) {
if ( store.data[i].age > 20 ) store.removeAt(i);
}
仅使用 public API 并记住您可能不想直接过滤商店或删除项目 one-by-one 因为这将触发任何连接的 UI 组件上不必要的重绘 - 您可以使用以下内容:
var subCollection = store.getData().createFiltered(function(item){
return item.get('age') < 20;
});
store.remove(subCollection.getRange());
store.remove(
store.queryBy(function(record) {
...
}).getRange()
)
适用于 4、5 和 6。
另一种方法:
// get records..
records.forEach(function (record) {
if (record.getData().age < 20) {
store.remove(record);
}
});
在 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}
]
});
我想删除 'age' 少于 20 的记录(在本例中,'Tommy' 和 'Aaron')。这个问题可能与如何查找条件相同的多条记录相同。
您可能不想要 removeAll
,而只是迭代并删除匹配
for ( var i = store.data.length; i--; ) {
if ( store.data[i].age > 20 ) store.removeAt(i);
}
仅使用 public API 并记住您可能不想直接过滤商店或删除项目 one-by-one 因为这将触发任何连接的 UI 组件上不必要的重绘 - 您可以使用以下内容:
var subCollection = store.getData().createFiltered(function(item){
return item.get('age') < 20;
});
store.remove(subCollection.getRange());
store.remove(
store.queryBy(function(record) {
...
}).getRange()
)
适用于 4、5 和 6。
另一种方法:
// get records..
records.forEach(function (record) {
if (record.getData().age < 20) {
store.remove(record);
}
});