gpt4 book ai didi

javascript - Angular - 不使用 ng-repeat 获取数据长度

转载 作者:行者123 更新时间:2023-11-28 18:42:54 25 4
gpt4 key购买 nike

我正在使用 Angular,我需要能够显示数组长度,但不使用 ng-repeat

这是场景:

我有default.json:

{
{ ...
"data":
[{
"name":"Test",
"errors":
[
{"id": 1,"level": 2,"details": {...}},
{"id": 3,"level": 1},
{"id": 5,"level": 1},
{"id": 5,"level": 1},
....
],
},
{
"name":"Test",
"errors":
[
{"id": 1,"level": 2,"details": {...}},
{"id": 5,"level": 1},
....
],
}
],
....
}
}

然后我从 Controller 创建了 myData,这样我就可以执行 ng-repeat="data in myData" 之类的操作,并且可以正确使用它。

现在,问题是:

我需要回顾所有错误,即对象中所有错误的总和。

我尝试做这样的事情:

<span ng-repeat="data in myData">
<i ng-repeat="error in data.errors">{{error.length}}</i>
</span>

什么也没打印出来。所以我尝试了:

<span ng-repeat="data in myData">
<i>{{data.errors.length}}</i>
</span>

结果是:

4 2 0 0 0 0 0

这是有道理的,因为我的第一个对象有 4 个错误,第二个对象有 2 个错误,依此类推...

但我只想看到:6,因为总共有 6 个错误。

如何才能获得一个值来汇总我所获得的所有对象的所有错误,而不必使用 ng-repeat (我认为我在那里不需要它)

希望这个问题足够清楚,感谢您的帮助。

最佳答案

一个可能的解决方案是使用 reduce ,所以你可以像这样使用reduce

var result = array.reduce((prev, curr) => prev + curr);

如果数组是[4,2,0],则结果将为6

因此,可能的解决方案是在标记上调用作用域内的函数

{{arraySum(data.errors.length)}}

函数将是

$scope.arraySum= function(array) {
return array.reduce((prev, curr) => prev + curr);
}

编辑对于此编辑,我们将使用函数 map

标记

{{totalErrors()}}

代码

$scope.totalErrors = function(){
if ($scope.myData)
return $scope.myData.data.map(function(o){ return o.errors.length})
.reduce((prev,curr) => {return prev + curr})
}

我根据我的理解创建了一个plunker,这是您的数据,您可以看到它正在工作 here

Here是一个使用 $timeout 模拟 ajax 请求延迟的 plunker。它使用 ng-cloak标记以防止显示原始数据。

关于javascript - Angular - 不使用 ng-repeat 获取数据长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35867294/

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