gpt4 book ai didi

javascript - Angular .js : How to count number of elements in nested ng-repeat

转载 作者:行者123 更新时间:2023-11-29 14:41:32 27 4
gpt4 key购买 nike

所以,我遇到的情况是循环遍历 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com