日期:2014-05-16  浏览次数:20670 次

ext碰到一个很奇怪的问题store里的filter方法不能够很好的过滤l,n两个字母
在测试的过程中,发现store的filter方法对l,n这两个字母过滤的结果有问题
相关代码:
var filter_text = new Ext.form.TextFiled({......});
filter_text.on('keyup', function(e){ 
  store.filter('alias', filter_text.getValue(), true, false);
}
在测试时,发现在filter_text只输入l或者n时,显示出来的数据中,还包括alias字段为null的结果,但为什么别的字母能正常显示,这个确实有点迷糊?(在filter_text中不输入或者输入后清空,显示全部的数据)


用下面这种方法时,能很好的过滤,但又有新的问题出现,在filter_text中输入一些信息,然后清空,此时,alias字段为null的数据却显示不了了。(后台传过来的数据{alias:null})

不知道大家碰到这个问题了没有,有知道的大侠,恳请来分享下,在此先谢谢啦!

filter_text.on('keyup', function(e){ 
  store.filterBy(function(record,id){
var temp = record.data.alias;
//if(temp==null){
// return true; ----原本是想把这个加上能在输入清空后显示为null的数据,加上后,过滤的数据中一直 有为null的数据,---------纠结......
//}
if(temp!=null){
var temp2 = temp.toLowerCase();
//if(temp2.trim().length==0){
//return true;
//}
if(temp2.indexOf(filter_text.getValue().toLowerCase())!=-1){
return true;
}
  }
  return false;
},this);}

------解决方案--------------------
//过滤store的记录。
store.filterBy(function(record, id) {
return Number(record.get("")) === Number(record.get("")) ? false : true;
});

------解决方案--------------------
逻辑判断错误