我真的很难理解不同类型的过滤器以及何时以及如何使用它们所以我决定从一开始就开始并慢慢增加难度。我尝试了从ExtJS 4文档中获得的最简单的过滤器,我有一个控制器,一个stroe,一个模型和一个视图,我使用CodeIgnaiter作为我的后端。因为我想自下而上,我所做的就是:
Ext.define('ABC.store.FilterRecordsByForm', {
extend: 'Ext.data.Store',
model: 'ABC.model.FormRecord',
autoLoad: true,
// autoSync: true,
// remoteFilter: true,
// remoteSort: false,
proxy: {
type: 'ajax',
actionMethods: 'POST',
api: {
read: g_settings.baseUrl + 'index.php/record/getRecordsListByForms'
},
reader :{
type: 'json',
root: 'data',
idProperty: 'id',
successProperty: 'success'
}
},
filters: [
{
property: 'procedure_id',
value : 3
}
]
});
所以在这里我只使用ExtJS 4文档中的示例并在stroe中硬编码我的过滤器。到现在为止还挺好。它按预期工作。但现在我想让我的value
字段将变量作为值,并在每次更改vlue
字段的值时重新加载过滤器。我是一个有点困惑的混淆Ext过滤器的确切实现在这里和在哪里使用。我想我应该将它放在控制器中,但不知道如何更改我的过滤器以响应它获得的新值,我是否必须对我的服务器端代码进行更改,或者我只能在客户端进行更改?
由于
Leron
答案 0 :(得分:3)
如果您的商店将remoteFiler设置为true,您可以执行以下操作:
store.clearFilter();
store.filter('procedure_id', new_value);
这会导致商店根据新过滤器重新加载内容。