我已经检查了文档,似乎无法解决为什么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)
});
答案 0 :(得分:1)
以下是使用filterBy的示例。
msgStore.filterBy(function (record){
if ((record.get('deviceMsgId'))===1 ||
record.get('messageType')==='TEXT_MESSAGE'){
return true;
}
});
此外,作为奖励,您可以通过以下代码轻松过滤商店:
msgStore.filter('deviceMsgId',1);
编辑:再次查看文档后,看起来您返回true是正确的。如果没有调用该函数,控制台中是否会抛出任何错误?