2016-06-30 5 views
0

私は製品とfilterStr変数を持つこのコントローラを持っている:部分文字列プロパティでng-repeatの値をフィルタリングする方法は?

リピートngのここ
app.controller('FooCtrl', function($scope) { 
    $scope.products = [ 
     { id: 1, name: 'Michael', data: 'Berlin' }, 
     { id: 2, name: 'Maria', data: 'Moscow'} 
     { id: 3, name: 'Alex', data: 'Aragon'}, 
     { id: 4, name: 'Mara', data:'Paris' } 
     /*... etc... */ 
    ]; 

$scope.filterStr = 'ar'; 
}); 

<div ng-repeat="product in products | filter: { name: filterStr }"> 

NG-繰り返しで、私は、オブジェクトを表示したいの上だけでは、nameプロパティ内のこの組み合わせを持っています手紙ar

id: 2, name: 'Maria', data: 'Berlin' 
id: 4, name: 'Mara', data:'Paris' 

angularjsで所望のフィルタを実装するための最良の方法は何ですか?

+0

[ここでうまく動作します](http://plnkr.co/edit/zeIwa3Hs16EPvXcMd3sI)。どんな問題があるのか​​わからない – charlietfl

答えて

-2

あなたは、角度からフィルタ機能を使用することができます。

<input type="text" placeholder="Search" ng-model="search.$"> 
<input type="checkbox" ng-model="strict"> Exact match only 
<div ng-repeat="product in products | filter: filter:search:strict"> 
+0

OPが探しているものではない。 OPは既に 'filter'を使用しています – charlietfl

2

をあなたが試すことができ、カスタム

<div ng-repeat="product in products | search:'name':'ar' "> 
    {{product.name}} 
</div> 

app.filter('search', function() { 

     return function(input,key,searchText) { 

     var out = [];  
     angular.forEach(input, function(obj) { 

      if(obj[key]){ 
       var text = obj[key].search(searchText) 
       if(text > 0) { 
       out.push(obj); 
       }    
      } 

     }); 
     return out; 
     } 

    }); 
0

第一のフィルタ:偉大な答えを@vigneshする感謝を! @vigneshが提供したコードは、私自身のプロジェクトでこのような実装を行うことを奨励しています!第二に

これは自分自身をフィルタリング実装しようとしますが、私は

app.filter('search', function() 
{ 
    return function(list, field, partialString) 
    { 
     // if the search string is invalid or empty - return the entire list 
     if (!angular.isString(partialString) || partialString.length == 0) return list; 

     var results = []; 

     angular.forEach(list, function(item) 
     { 
      if (angular.isString(item[field])) 
      { 
       if (item[field].search(new RegExp(partialString, "i")) > -1) 
       { 
        results.push(item);  
       } 
      } 
     }); 

     return results; 
    } 

}); 

は、私は、検索入力し、それを使用し...このソリューションはもう少し改善することができることに気付きましたリピータ

<input ng-model="myPartialSearchString" /> 
<div ng-repeat="item in items | search:'name':myPartialSearchString "> 
    {{item.name}} 
</div> 
関連する問題