2017-01-09 6 views
0

現在、私は行ごとにかなり大きなオブジェクトを書き出すng-repeatを持っています。しかし、私は、オブジェクトが持っている20のプロパティではなく、5つのプロパティをスキャンする検索フィルタのみを必要としています。特定のプロパティをチェックし、残りの部分を無視するようにフィルタに指示する方法はありますか?私は以下のことを考えていました...AngularJS Ng-Repeat Search Filter、検索するプロパティを制限するにはどうすればよいですか?

<div> <input ng-model="search" type="text"/> </div> 
<div ng-repeat="item in items | filter:search:property1:property2"> 
    {{item.property1}} 
</div> 

答えて

2

必要なパラメータを持つカスタムフィルタを作成します。

app.filter('myFilter', function(){ 
    // Just add arguments to your HTML separated by : 
    // And add them as parameters here, for example: 
    // return function(dataArray, searchTerm, argumentTwo, argumentThree) { 
    return function(dataArray, searchTerm) { 
     // If no array is given, exit. 
     if (!dataArray) { 
      return; 
     } 
     // If no search term exists, return the array unfiltered. 
     else if (!searchTerm) { 
      return dataArray; 
     } 
     // Otherwise, continue. 
     else { 
      // Convert filter text to lower case. 
      var term = searchTerm.toLowerCase(); 
      // Return the array and filter it by looking for any occurrences of the search term in each items id or name. 
      return dataArray.filter(function(item){ 
       var termInId = item.id.toLowerCase().indexOf(term) > -1; 
       var termInName = item.name.toLowerCase().indexOf(term) > -1; 
       return termInId || termInName; 
      }); 
     } 
    }  
}); 

次にHTML

<tr ng-repeat="item in data | myTableFilter:filterText:argumentTwo:argumentThree"> 

filter-by-multiple-columns-with-ng-repeat

+0

私はこれを試してみましょう! – user1732364

+0

これがうまくいった!ありがとうございます – user1732364

0

あなたが直接行うことができますわからないからインスピレーションを受けています。私はそれを行うためにコントローラに関数を書く必要があると思います。

<div> <input ng-model="search" type="text"/> </div> 
    <div ng-repeat="item in items | filter:searchSpecificPpts()"> 
     {{item.property1}} 
    </div> 

in your controller create a function like 
    $scope.searchSpecificPpts(){ 
     //Here goes the logic to filter 
     return filteredList; 
    } 
+0

私がこのアプローチで持っていた問題は、ユーザーが比較を行うために探していたテキストを取得できなかったことです。 – user1732364

+0

ユーザーはng-model = "search"を入力します。したがって、$ scope.searchSpecificPpts()関数で$ scope.searchとして使用します。プロパティにアクセスできます。 –

関連する問題