我有一个包含值的列表/商店。现在我有自动完成功能,它会建议以键盘上给出的字母开头的值。但我想(而不是)this.getRawValue()
是一个表达式,它将显示包含该字母的所有值,而不仅仅是以给定字母开头的值。
因此,如果我键入' D',它还应显示名称' Sander',它不以D开头,但包含D.
这是具体的代码:
this.getStore().filter('NAME', this.getRawValue());
我知道javascript包含someString.includes(...)
和someString.indexOf(...)
。
但是通过这种方式,我首先需要获得someString
,我认为我必须通过在每个按键上迭代商店来完成。有更聪明的方法吗?
由于
答案 0 :(得分:1)
这是一次旧的改变。
你可以使用过滤功能来做到这一点,我用这个来对网格进行银泰研究,但是如果你在组合变化上设置过滤器它会是相同的。
var me=this,
list=me.lookup('listapdv'),
labelSearch=me.lookup('labelSearch'),
labelDelete=me.lookup('labelDelete'),
store=list.getStore();
store.clearFilter(true);
me.lookup('table').refresh();
labelSearch.setVisible(true);
labelDelete.setVisible(false);
if(newValue!==''){
if(newValue.match(/\s/)){
var val=newValue.toLowerCase().split(/\s/g);
store.filter({
filterFn:function(item){
var ragsoc=item.get('ragsoc').toLowerCase(),
match=[],
flag=true;
val.forEach(function(text,index){
if(text!==''){
match[index]=(ragsoc.indexOf(text)!==-1)?true:false;
}
});
match.forEach(function(f,i){
if(!f) flag=false;
});
return flag;
}
});
}else{
store.filter([{
property:'ragsoc',
value: newValue,
operator:'like'
}]);
}
labelSearch.setVisible(false);
labelDelete.setVisible(true);
}
me.lookup('aziendeCount').setText(''+store.data.length);
list.setSelection(store.getAt(0));