有个列表LIST 和搜索栏 通过搜索栏输入字符来过滤LIST信息
controller/courselib.js
先定义
config: {
refs: {
searchField: 'searchfield'
},
control: {
searchField: {
keyup: 'onSearchKeyUp'
}
}
}
方法:
onSearchKeyUp:function(field) {//get the store and the value of the field
var value = field.getValue(), //field为传回来的按键值,通过field.getValue来获得
store = Ext.getStore('course'); //通过getStore('course')获得store文件夹下course.js数据
//first clear any current filters on thes tore
store.clearFilter(); //取消当前对数据的过滤
//check if a value is set first, as if it isnt we dont have to do anything
if (value) {
//the user could have entered spaces, so we must split them so we can loop through them all
var searches = value.split(' '), //去除搜索栏用户输入的空格
regexps = [],
i;
//loop them all
//开始搜索
for (i = 0; i < searches.length; i++) {
//if it is nothing, continue
if (!searches[i]) continue;
//if found, create a new regular expression which is case insenstive
//new RegExp为创立新的正则表达式 将得到的文本忽略大小写 形成新的数组regexps
regexps.push(new RegExp(searches[i], 'i')); //i的意思为ignore case(忽略大小写)
}
//now filter the store by passing a method
//the passed method will be called for each record in the store
//添加数据过滤器
store.filter(function(record) {
var matched = [];
//loop through each of the regular expressions
for (i = 0; i < regexps.length; i++) {
var search = regexps[i],
didMatch = record.get('coursename').match(search) ;
//if it matched the coursename, push it into the matches array
matched.push(didMatch);
}
//if nothing was found, return false (dont so in the store)
if (regexps.length > 1 && matched.indexOf(false) != -1) {
return false;
} else {
//else true true (show in the store)
return matched[0];
}
});
}
}