2013-03-07 115 views
1

我需要搜索多個項目。到目前爲止,我只知道如何尋找單個項目搜索多個項目sencha touch

這裏是我的代碼

Controller.js

onSearchKeyUp: function (field) { 
    //get the store and the value of the field 
    var value = field.getValue(), 
     store = Ext.getCmp('transactionlist').getStore();  

    //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 
     regexps.push(new RegExp(searches[i], 'i')); 
    } 

    //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('transactionId').match(search) ; 

     //if it matched the first or last name, 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]; 
     } 
    }); 
    } 
}, 

請指導我如何搜索多個項目。謝謝

回答

0

您似乎要返回false任何您的正則表達式失敗。如果我沒有理解你的問題,你想趕上輸入值的任何,所以你應該返回false只有當個個失敗。

嘗試改變:

if (regexps.length > 1 && matched.indexOf(false) != -1) { 
    return false; 

到:

if (regexps.length > 1 && matched.indexOf(true) != -1) { 
    return false; 

,看看有沒有什麼幫助。

0
didMatch = record.get('transactionId').match(search) || record.get('transactionName').match(search);