国の配列にユーザーが入力した検索文字列が含まれているかどうかを確認する angularjs カスタム フィルターを作成しようとしています。
文字列は、1 文字 (例: 'E')、n 文字の断片 (例: 'lan')、または単語全体 (例: 'England') で構成できます。
いずれの場合も、その 1 文字またはその断片を含むすべての国を返す必要があるため、'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>
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; }; }]);