我正在嘗試編寫一個angularjs自定義過濾器來檢查國家數組是否包含用戶輸入的搜索字符串。該字符串可以由一個字母(例如'E')或一個n字母的片段(例如'lan')或整個單詞(例如'England')組成。在所有情況下,所有包含該單字母或片段的國家都應退還,因此'E'將返回'英格蘭','愛沙尼亞'等,而'蘭'將返回'英格蘭','愛爾蘭',等我如何編寫angularjs過濾器來搜索字符串片段/字符串序列
到目前爲止,我的過濾器返回整個國家或單個字母,但我在使用字符串片段難度:
HTML模板:
<input ng-model="filter.text" type="search" placeholder="Filter..."/> <ul> <li ng-repeat="item in data | listfilter:filter.text"> </ul>
個angularJS
angular.module('sgComponents').filter('listfilter',[ function() { return function(items, searchText) { var filtered = []; angular.forEach(items, function(item) { if(item.label === searchText) { // matches whole word, e.g. 'England' filtered.push(item); } var letters = item.label.split(''); _.each(letters, function(letter) { if (letter === searchText) { // matches single letter, e.g. 'E' console.log('pushing'); filtered.push(item); } }); // code to match letter fragments, e.g. 'lan' }); return filtered; }; }]);
完美!非常感謝。我需要這樣做,因爲你推薦:if(item.label.toLowerCase()。indexOf(searchText.toLowerCase())> = 0)filtered.push(item); – Tone