2016-04-15 6 views
1

Angularでかんばんボードアプリを作成しました。これで、フィルタリングされたPost-Itsポイントの合計とカウントを入れたいと思います:AngularJS - 入れ子にされたng-repeatでフィルタリングされた孫のアイテムを合計する方法

私はすべてのフィルタ処理後のを反復処理し、正常に動作している彼らのポイントを、合計する sumPointsFilterを使用する ng-bindに使用し、その後、 filteredPostItsエイリアスに私のフィルタ処理後のその割り当てる
<input type="text" ng-model="searchText"> 

<div ng-init="col.TotalPoints = 0" ng-repeat="col in columns"> 
    <h3>{{col.Title}} - ({{ col.TotalPoints?? }} Pts.)</h3> 
    <div ng-init="subCol.Points = 0" ng-repeat="subCol in col.SubColumns"> 
     <h3>{{subCol.Title}} - {{ subCol.Points }} Pts.</h3> 
     <div ng-show="false" ng-bind="subCol.Points= (filteredPostIts| sumPointsFilter:'Points')" ></div> 
     <div ng-repeat="postIt in filteredPostIts = (subCol.PostIts | filter:searchText)"> 
      <p>#{{postIt.Id}}</p> 
      <p>{{postIt.Title}}</p> 
      <p>{{postIt.UserName}}</p> 
      <p>{{postIt.Points}} Points</p> 
     </div> 
    </div> 
</div> 

。サブ列ポイントは、検索入力に何らかのテキストを入力して、後のフィルタリングを開始するとすぐに再計算されます。

ここでは、列全体の合計ポイントを計算したいと思います。その合計は、そのサブカラムの合計です(フィルタリングされたポストを考慮)。

これはJSFiddleです。最初の列は "N oo Iniciado"(開始されていない)で、 "Backlog"という1つのサブカラムがあります。 2番目の列は「Emandamento」で、2つのサブカラム(「Executando」と「Aguardando」)があります。

は、例えばマルチェロを入力してみてください、そして、それはマルチェロの後にそのようにフィルタリングして、サブ列のためのポイントを再計算します。

これをどのように達成できますか?あなたはかなりのビットはそのjsfiddleに行くが、私は、私はあなたが何ができるかを見ると考えています

+0

ことができます列とサブ列の範囲変数を設定してjsfiddleを作成しますか? – r0m4n

+0

さて、私はちょっと待ってください。 – Alisson

+0

@ r0m4n JSFiddleを追加しました。複雑すぎるかどうか教えてください。シナリオを単純化しようとしました。 – Alisson

答えて

1

...

リユースこのように同じ加算フィルタ:

<h3>{{col.Titulo}} - ({{ col.Divisorias | sumPointsFilter: 'Points'}} Pts.)</h3> 

https://jsfiddle.net/r0m4n/9zbrohhy/54/

+0

これはすべての問題を解決しました。私は同じフィルタを再利用することは考えていませんでした。思ったより簡単でした。毎日私はAngularJSがどのようにしてシンプルでパワフルなのかを、ますます発見しています。ありがとう!!! – Alisson

関連する問題