AngularJS - 如何在嵌套的ng-repeat中对已过滤的孙项进行求和

时间:2016-04-15 17:15:52

标签: javascript angularjs ng-repeat angularjs-filter ng-bind

我用Angular创建了一个看板板应用程序,现在我想把过滤Post-Its点数的总和,以及一个计数,如下所示:

<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>

我将过滤后的Post-Its分配给filteredPostIts别名,然后用ng-bindsumPointsFilter使用html2element迭代所有过滤后的帖子并将其点数相加,这是有效的精细。一旦我们通过在搜索输入中键入一些文本来开始过滤一些帖子,就会重新计算子列点。

现在我想计算整列的总点数,即其子列的总和(考虑过滤后的列)。

这是JSFiddle。第一列是“NãoIniciado”(未启动),其中有一个名为“Backlog”的子列。第二列是“Em andamento”,它有两个子列(“Executando”和“Aguardando”)。

尝试输入 marcello 作为示例,它会过滤Marcello的post-it,并重新计算子列的点数。

我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:1)

你确实有相当多的jsfiddle,但我想我知道你能做些什么......

重复使用相同的求和过滤器:

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

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