ExtJS 4:动态存储过滤

时间:2017-10-04 15:15:17

标签: extjs extjs4 filtering store

我在商店的 <iframe width="560" Cannot GET /uri.vurl%20%7C%20youtube height="315" src="uri.vurl | youtube" frameborder="0" allowfullscreen></iframe> 配置中指定了过滤器:

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,因此必须过滤商店。如何保持商店始终被过滤(无论何时执行CRU操作和加载后)?

1 个答案:

答案 0 :(得分:1)

要实现这一点,需要在添加和更新事件时向商店添加监听器:

listeners: {
    add: function(store) {
        store.filter();
    },

    update: function(store) {
        store.filter();
    }
},