我有一个带有几个过滤器的ng-repeat和一个ng-show验证,显示ng-repeat中的指示符(标记):
ng-show="(item.localDate | amDifference : lastRefreshDate : 'minutes')>=-15 && !item.state"
我需要计算这些验证中有多少是真的。我知道可以在数组之前循环并计算控制器中的发生次数,但有没有办法在标记中直接进行,因为ng-repeat已经在循环中了?
更新
我尝试使用:
ng-init="total = (item.localDate | amDifference : lastRefreshDate : 'minutes')>=-15 && !item.state ? total+1 : total"
哪个不起作用。
还尝试了控制器中的一个功能:
$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循环,它"工作"但是在15分钟验证后视图会更新,但我的计数器没有。
我必须补充说我正在使用Ionic Framework。
答案 0 :(得分:0)
我通过添加:
解决了这个问题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;
}
};