首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ng- html循环中的重复计数

ng- html循环中的重复计数
EN

Stack Overflow用户
提问于 2014-09-04 13:45:38
回答 4查看 6.3K关注 0票数 6

是否有一个项目的计数,然后显示在循环之外?

代码语言:javascript
运行
复制
<tr ng-repeat="value in values">
   <td>value.total</td>
</tr>
<tr>
   <td>Total Of All Values: {{ total }}</td>
</tr>

我试着使用ng-init()但没有成功,因为我认为它每次都是压倒一切的。

代码语言:javascript
运行
复制
<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>

不管怎么说,在这里做这件事,没有在我的控制器中做一个函数?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-09-04 13:59:41

在ng-重复中初始化的total将具有不同的范围,不能在循环之外访问。

试试这个:

代码语言:javascript
运行
复制
<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>
票数 6
EN

Stack Overflow用户

发布于 2014-09-04 13:59:04

您可以使用$parent符号访问ng-重复作用域中的$scope变量(从外部ng-重复)。因此,在初始化之后,它将计算总数并将其存储在外部初始化的$scope变量中。

代码:

代码语言:javascript
运行
复制
<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>

工频

票数 3
EN

Stack Overflow用户

发布于 2014-09-04 14:03:28

尽管它们看起来确实很相似,但在命令式编程语言中,ngRepeat并不像for循环那样工作。ngRepeat指令由两个单独运行的步骤组成。首先,它生成一个数组/一个映射,其中包含repeatet值。其次,它为每个repeatet值呈现模板(元素中带有ngRepeat的元素)。但是,它不会像命令式编程语言那样迭代代码块。

尽管您可能实现了尝试使用$parent.total所做的事情,但一旦数组的内容发生变化,您可能会遇到该解决方案的其他缺陷。为了缩短它,您应该找到另一种方法来总结数组中的值。

在我看来,对值进行汇总的最佳位置是带有如下一行的控制器:

代码语言:javascript
运行
复制
$scope.total = values.reduce(function (a,b) {return a+b});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25667130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档