将过滤器存储在sencha touch中

时间:2013-09-04 05:44:24

标签: sencha-touch-2

我有结构的商店:

Ext.create('Ext.data.Store', {
    fields: [
        'title'
    ],
    data: [{
        title: 'ABC'
    }, {
        title: 'ABC2'
    }, {
        title: 'ABC3'
    }, {
        title: 'ABC4'
    }, {
        title: 'ABC5'
    }, {
        title: 'ABC6'
    }]
});

因此,当我加载此商店时,List将填充所有6条记录。

我只想按下按钮过滤此商店我只想从这6条记录中获取一些选定的记录是否有可能。

向我提供一些想法或工作代码。

2 个答案:

答案 0 :(得分:7)

根据标题过滤商店

Ext.getStore('storeId').filter("title", "ABC3");

清除过滤器

 Ext.getStore('storeId').clearFilter();

请参阅商店filter doc

<强>更新

Ext.getStore('storeId').filterBy(function(record){
   var title = record.get('title');
   if(title == "ABC" || title == "ABC1" || title == "ABC2")
      return record;
});

答案 1 :(得分:0)

我的方法是在点击按钮时在商店上设置过滤器。在我的情况下,它是一个选择字段,在更改事件I过滤器与selectfield

中的当前值进行比较
    onChangeStatusSelectfield: function (newValue, oldValue) {
    var store = Ext.getStore('CustomVacationRequest');
    console.log('Accepted Filter');
    newValue = this.getStatusSelectfield().getValue();
    console.log(store, newValue);
    store.clearFilter();
    if (store != null);
    store.filter(function (record) {
        if (newValue == record.data.status) { //your data from the store compared to 
                                              //the value from the selectfield
            return true; 
        }
        Ext.getCmp("VacationRequestsManagerList").refresh() //refresh your list   
});

},

这只是我控制器的一部分。根据您自己的选择和需要处理事件,按钮和商店。祝你好运!