ExtJS 4:动态存储过滤
ExtJS 4: Dynamic store filtering
我在商店的 filters
配置中指定了一个过滤器:
Ext.define('Record', {
extend: 'Ext.data.Model',
fields: [{
name: 'value',
type: 'number'
}]
});
Ext.create('Ext.data.Store', {
id: 'store',
model: 'Record',
filters: [
function(item) {
return item.get('value') > 2;
}
],
sorters: [{
property: 'value',
direction: 'DESC'
}],
data: [{
value: 2,
}, {
value: 1
}, {
value: 3
}]
});
Ext.create('Ext.view.View', {
store: Ext.data.StoreManager.lookup('store'),
tpl: new Ext.XTemplate(
'<tpl foreach=".">',
'<div class="record">{value}</div>',
'</tpl>'
),
itemSelector: '.record',
emptyText: 'No records',
renderTo: Ext.getBody()
});
仅当我在商店中明确调用 filter()
时才适用。 filterOnLoad
未设置,默认为 true
,因此必须过滤商店。如何保持商店始终过滤(无论何时执行任何 CRU 操作以及加载后)?
要完成此操作,需要在添加和更新事件时向商店添加侦听器:
listeners: {
add: function(store) {
store.filter();
},
update: function(store) {
store.filter();
}
},
我在商店的 filters
配置中指定了一个过滤器:
Ext.define('Record', {
extend: 'Ext.data.Model',
fields: [{
name: 'value',
type: 'number'
}]
});
Ext.create('Ext.data.Store', {
id: 'store',
model: 'Record',
filters: [
function(item) {
return item.get('value') > 2;
}
],
sorters: [{
property: 'value',
direction: 'DESC'
}],
data: [{
value: 2,
}, {
value: 1
}, {
value: 3
}]
});
Ext.create('Ext.view.View', {
store: Ext.data.StoreManager.lookup('store'),
tpl: new Ext.XTemplate(
'<tpl foreach=".">',
'<div class="record">{value}</div>',
'</tpl>'
),
itemSelector: '.record',
emptyText: 'No records',
renderTo: Ext.getBody()
});
仅当我在商店中明确调用 filter()
时才适用。 filterOnLoad
未设置,默认为 true
,因此必须过滤商店。如何保持商店始终过滤(无论何时执行任何 CRU 操作以及加载后)?
要完成此操作,需要在添加和更新事件时向商店添加侦听器:
listeners: {
add: function(store) {
store.filter();
},
update: function(store) {
store.filter();
}
},