作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我遇到的情况是循环遍历 JSON 对象列表,其中包含一个列表作为属性。我有一个在该列表属性上重复的内部循环。类似这样的事情:
Number of results: {{count}}
<div ng-repeat="jsonObject in outerList | someFilter" ng-show="innerList.length">
<h1>{{jsonObject.Name}}</h1><br>
<div ng-repeat="items in jsonObject.listAttr | someOtherFilter as innerList">
{{items.data}}<br>
</div>
<br>
</div>
我面临的问题是找到一种方法来获取内部重复的每次迭代中所有元素的聚合计数。因此,如果第一个 jsonObject 有 2 个匹配内部过滤器的东西,第二个 jsonObject 有 3 个匹配内部过滤器的东西,我们在整个循环外显示计数 5(在上面的 count 变量中,或类似的东西)。
我已经研究了多种方法来尝试获得该计数,但没有任何成功。我发现的一些解决方案中的一个难题是,过滤器是用户可以随时更改的东西(例如,通过搜索框),所以我不能只应用 Controller 在页面加载并显示它。我可能会从 5 个对象开始,直到用户在搜索框中键入内容,将数字降至 2。
最佳答案
我想你想要这个......
$scope 中的函数
$scope.moreOne = function(counter) {
$scope[counter]++;
}
jsonObject中的每一个元素,这个都统计
<div ng-repeat="jsonObject in outerList | someFilter" ng-show="innerList.length">
<h1>{{jsonObject.Name}}</h1><br>
<div ng-repeat="items in jsonObject.listAttr | someOtherFilter as innerList" ng-init="moreOne('count')">
{{items.data}}<br>
</div>
<br>
</div>
你看到 ng-init 了吗?
ng-init="moreOne('count')"
也许这个解决方案不是最好的……Saludos! :-)
更新
好的,您可以使用观察者来控制模型的变化。如果 outerList
或任何(您可以为任何属性定义观察者)更改,观察者将被触发。而且您只需要此代码而无需 moreOne 功能:-)
$scope.$watch("outerList", function(list) {
$scope.count = 0;
for(var i = 0; i < list.length; i++) {
$scope.count += list[i]['listAttr'].length;
}
});
关于javascript - Angular .js : How to count number of elements in nested ng-repeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37755998/
我是一名优秀的程序员,十分优秀!