1

私は、アイテムの繰り返し配列に対してangularjsフィルタ方法を使用しており、limitToフィルタで数値をフィルタリングしようとしています。結果はDOMの繰り返しには適用されません。ここlimittoを使用した角度オブジェクトのフィルタ番号

は、HTML

<div ng-controller="demo as d"> 
     <input type="text" ng-model="d.test" ng-change="d.filterthis(d.test)"><br> 
     <div ng-repeat="item in d.items | limitTo:d.limitto track by $index"> 
      <span ng-show="!item.show">{{item.myno}}</span> - 
      <span ng-show="!item.show">{{$index}} - {{item.mystr}}</span><br> 
     </div> 
</div> 

App.jsフィルタ関数withingが

this.filterthis = function(filter){ 
    that.items.map(function(filter){ 

      return function(obj){ 
       obj.show=true; 
       if(obj.myno.toString().indexOf(filter) >-1){ 
        console.log(obj); 
        obj.show=false; 
       } 
       return obj; 
      } 
    }(filter)); 
}; 

商品angularjsあるこの

this.items = [{ 
     show:false, 
     myno:10, 
     mystr:"test1" 
    }]; 

http://plnkr.co/edit/bTdlTpSeZuPyGpolXLEG

+0

あなたは 'ショーを持っているアイテムを返しませしようとしている:true'には、入力フィールドの値に基づいて適用されますか? – haxxxton

+0

それは逆でした。その使用方法を申し訳ありません。あなたはショーを取ることができます===隠して、それを見てください。フィルターが私の問題です。 plunkr – Gary

+0

ng-show = "!item.show" – Gary

答えて

1

ような配列でありますあなたの商品にキーとして「ショー」を付けると、それはng-repeatから削除されないので、limitToフィルタは引き続きアイテムを返します。代わりに、あなたは唯一のlimit'ed結果をフィルタリングしているfilterあなたlimitToしてからならば順序は、ここでは重要であるように

<input type="text" ng-model="d.search"><br> 
<div ng-repeat="item in d.items | filter:{myno:d.search} | limitTo:d.limitto track by $index"> 
    <span>{{item.myno}}</span> - 
    <span>{{$index}} - {{item.mystr}}</span><br> 
</div> 

ノートのような繰り返しでfilterフィルタを活用すべきです。 {myno:d.search}を別のキーに変更してフィルタリングするキーを変更することもできます。オブジェクト全体を検索する場合は、単にd.searchを使用します。

Updated Plunker

+0

私は複数のフィルタの実装をしていたし、オブジェクトに基づいてフィルタを使用しませんでした。今は素晴らしい作品です。これは私の実際の必要性を変換したものです。ありがとう、トン... haxxxton。 ;-) http://plnkr.co/edit/bQh4MoOfTAx7IsMquswZ – Gary

関連する問題