我正在为商店使用过滤器。问题是我想要返回完全匹配。
例如:
如果我在网格中过滤aa-1
,则会显示aa-1
和aa-1***
,但如果我只想查看aa-1
的所有内容。
我用它来过滤:
listeners: {
itemclick: function() {
var data = grid.getSelectionModel().selected.items[0].data;
store.clearFilter();
store.filter('productsCat', data.productsCat);
}
}
如何进行完全匹配需要做什么?
答案 0 :(得分:13)
对于ExtJS 4,您只需使用exactMatch和caseSensitive配置选项:
store.filter({
property: fieldName,
value: fieldValue,
exactMatch: true,
caseSensitive: true
})
答案 1 :(得分:5)
您可以在过滤器中使用正则表达式,以确保比较值是短语的结尾。
或者使用filterBy()方法来定义比较函数,例如:
store.filterBy(this, function(rec, id) {
if(rec.get('thefieldtocompare') === "what you want to compare against") {
return true;
}
else {
return false;
}
});
答案 2 :(得分:3)
您没有提到您正在使用的ExtJS版本,但这里有两种常规方法:
提供具有精确mathing模式的正则表达式:
store.filter('productsCat', new RegExp('^' + Ext.escapeRe(data.productsCat) + '$'));
或
store.filterBy(function(rec) {
return rec.get('productsCat') === data.productsCat;
});