2016-04-01 5 views
2

https://github.com/a8m/angular-filter/angularJs独自のフィルター - 私はNGリピートでユニークなプロパティを使用するには、上記Angularjsフィルタライブラリを使用していますユニークな配列の長さ

を得ていません。以下

NG-繰り返し私のランキング配列の長さの私のコードユニーク後

<div class="rankblock" ng-repeat="item in sports.Ranks.Rank |unique:'_position'> 
<span> {{sports.Ranks.Rank.length}}</span> // 
</div> 

は6となるが、それはまだ出力9(オリジナルのARRの長さ)を示しています。

+0

フィルタは元の配列ではなく、表示されているデータにのみ影響します。したがって、 'sports.Ranks.Rank.length'は元の長さを期待通りに表示します。 [この記事を読む](http://angular-tips.com/blog/2014/08/tip-accessing-filtered-array-outside-ng-repeat/)あなたが期待するものを得る。 – GillesC

答えて

3

フィルターは内部でng-repeat新しい配列に戻ります。これはフィルターのアイデアです。フィルターをかけますが、入力の変更は避けてください。言い換えれば:

ng-repeat="item in sports.Ranks.Rank | unique:'_position' 

ときここ

<span> {{sports.Ranks.Rank.length}}</span> 

あなたはまだ元の長さを読んで、重複のない新規配列であるフィルタ機能、の結果を通過するNG-繰り返し言います1。

新しい配列の長さを表示するには、たとえば次のようにします。次のように試してください

{{ (sports.Ranks.Rank | unique:'_position').length }} 

(これは決してうまくいきませんでした)、まだこれは実行可能な解決策ではありません。実際には、コントローラレベルでの重複排除が行われます。

+0

はい元の配列の長さを返します。一意の配列の長さではありません – shank

+1

@shankはい、これは正しい動作です – smnbbrv

+1

ありがとう、あなたはとても多くのsmnbbrv .. !!! – shank

関連する問題