我有一个带有多个过滤器的 ng-repeat 和一个 ng-show 验证,该验证在 ng-repeat 中显示一个指示器(徽章):
ng-show="(item.localDate | amDifference : lastRefreshDate : 'minutes')>=-15 && !item.state"
我需要计算有多少个验证是正确的。我知道可以在之前循环遍历数组并计算 Controller 中的出现次数,但是有没有一种方法可以直接在标记中执行此操作,因为 ng-repeat 已经在执行循环了?
更新
我尝试使用:
ng-init="total = (item.localDate | amDifference : lastRefreshDate : 'minutes')>=-15 && !item.state ? total+1 : total"
这不起作用。
还尝试了 Controller 中的一个功能:
$scope.iter = function(item) {
var localDate = moment(item.localDate);
var diff = localDate.diff(angular.copy($scope.lastRefreshDate), 'minutes');
if (diff >= -15 && item.state === 0) {
$scope.newFeeds += 1;
}
};
在模板中这样调用:
{{iter(item))}}
但它会使应用程序循环直至崩溃。
我尝试创建一个指令,但我很难将值分配给父作用域,同时还传递模板中的变量。
如果我手动执行另一个 for 循环,它会“工作”,但 View 会在 15 分钟验证后更新,但我的计数器不会。
我必须补充一点,我正在使用 Ionic 框架。
最佳答案
我通过添加解决了这个问题:
ng-init="iter(item)"
在 ng-repeat 语句中。
调用:
$scope.iter = function(item) {
var localDate = moment(item.localDate);
var diff = localDate.diff(angular.copy($scope.lastRefreshDate), 'minutes');
if (diff >= -15 && item.state === 0) {
$scope.newFeeds += 1;
}
};
关于javascript - Angularjs 计算标记中 ng-show 的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32419487/