是否有一个项目的计数,然后显示在循环之外?
<tr ng-repeat="value in values">
<td>value.total</td>
</tr>
<tr>
<td>Total Of All Values: {{ total }}</td>
</tr>我试着使用ng-init()但没有成功,因为我认为它每次都是压倒一切的。
<tr ng-repeat="value in values">
<td ng-init="total = total + value.total>value.total</td>
</tr>
<tr>
<td>Total Of All Values: {{ total }}</td>
</tr>不管怎么说,在这里做这件事,没有在我的控制器中做一个函数?
发布于 2014-09-04 13:59:41
在ng-重复中初始化的total将具有不同的范围,不能在循环之外访问。
试试这个:
<table ng-init="total = 0">
<tr ng-repeat="value in values">
<td ng-init="$parent.total = $parent.total + value.total">{{value.total}}</td>
</tr>
<tr>
<td>Total Of All Values: {{ total }}</td>
</tr>
</table>发布于 2014-09-04 13:59:04
您可以使用$parent符号访问ng-重复作用域中的$scope变量(从外部ng-重复)。因此,在初始化之后,它将计算总数并将其存储在外部初始化的$scope变量中。
代码:
<div ng-app ng-controller="test">
<table ng-init="total=0;">
<tr ng-repeat="value in values">
<td ng-init="$parent.total = total + value">{{value}}</td>
</tr>
<tr>
<td>Total Of All Values: {{ total }}</td>
</tr>
</table>
</div>工频
发布于 2014-09-04 14:03:28
尽管它们看起来确实很相似,但在命令式编程语言中,ngRepeat并不像for循环那样工作。ngRepeat指令由两个单独运行的步骤组成。首先,它生成一个数组/一个映射,其中包含repeatet值。其次,它为每个repeatet值呈现模板(元素中带有ngRepeat的元素)。但是,它不会像命令式编程语言那样迭代代码块。
尽管您可能实现了尝试使用$parent.total所做的事情,但一旦数组的内容发生变化,您可能会遇到该解决方案的其他缺陷。为了缩短它,您应该找到另一种方法来总结数组中的值。
在我看来,对值进行汇总的最佳位置是带有如下一行的控制器:
$scope.total = values.reduce(function (a,b) {return a+b});https://stackoverflow.com/questions/25667130
复制相似问题