ExtJS Store.filterBy在Store.filter工作的地方失败

时间:2014-08-23 04:55:51

标签: extjs extjs4 extjs4.1

我已经检查了文档,似乎无法解决为什么store.filter()工作,直到我向它添加一个函数,并且filterBy()失败。

我需要过滤器来检查记录中的两件事。 我需要检查一下:

 if(deviceMsgId == 1 || messageType == 'TEXT_MESSAGE')

商品

 var msgStore =  Ext.create('p7_ui_static.store.DeviceMessageStore', {
    id: 'messageLogStore',
    storeId: storeId,
    remoteFilter: false,
    autoLoad:false,
    ...
    ...
});

模型

Ext.define('p7_ui_static.model.DeviceMessage', {
   extend: 'Ext.data.Model',
   ...
   ...
   fields: [
      {
        name: 'deviceMessageTypeId'
      },
      {
        name: 'messageType'
      },
      {
        ...
      }
   ]
});

此过滤器工作 - >

过滤(过滤,[值])

    msgStore.clearFilter(true);
    msgStore.filter([
            { property: 'deviceMsgId', value : 1 }
    ]);


但这个过滤器失败 - >

filterBy(fn,[scope])

msgStore.filterBy(function(record){
    return record.get('deviceMsgId' == 1)
});

1 个答案:

答案 0 :(得分:1)

以下是使用filterBy的示例。

msgStore.filterBy(function (record){
    if ((record.get('deviceMsgId'))===1 || 
            record.get('messageType')==='TEXT_MESSAGE'){
        return true;
    }
});

此外,作为奖励,您可以通过以下代码轻松过滤商店:

msgStore.filter('deviceMsgId',1);

编辑:再次查看文档后,看起来您返回true是正确的。如果没有调用该函数,控制台中是否会抛出任何错误?