1

我真的很难理解不同类型的过滤器以及何时以及如何使用它们,所以我决定从一开始就开始慢慢增加难度。我尝试了从 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 过滤器的确切实现在这里和哪里使用。我想我应该把它放在控制器中,但不知道如何更改我的过滤器以响应它获得的新值,我是否必须对我的服务器端代码进行更改,或者我只能在客户端进行更改?

谢谢

勒隆

4

1 回答 1

3

如果您的商店将 remoteFiler 设置为 true,您可以执行以下操作:

store.clearFilter();
store.filter('procedure_id', new_value);

这将导致商店根据新过滤器重新加载它的内容。

于 2012-04-30T19:23:21.050 回答