我正在尝试编写一个 angularjs 自定义过滤器来检查国家数组是否包含用户输入的搜索字符串。
字符串可以由一个字母(例如'E')、n 个字母的片段(例如'lan')或整个单词(例如'England')组成。
在每种情况下,都应返回包含该字母或该片段的所有国家/地区,因此“E”将返回“England”、“Estonia”等,而“lan”将返回“England”、“Ireland”等。
到目前为止,我的过滤器返回整个国家或单个字母,但我在处理字符串片段时遇到了困难:
HTML 模板:
<input ng-model="filter.text" type="search" placeholder="Filter..."/> <ul> <li ng-repeat="item in data | listfilter:filter.text"> </ul>
角JS
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; }; }]);