这是我的代码:
<div ng-show="?" ng-repeat="item in items | notEmpty">
</div>
过滤器:
Kb.filter("notEmpty", function(){
return function(input){
var output=[];
for(var i=0;i<input.length;i++){
if(input[i]){
output.push(input[i]);
}
}
return output;
}});
我需要根据循环中过滤项目的数量显示/隐藏重复的s。 最好的方法是什么?
由于
答案 0 :(得分:58)
ng-repeat
表达式允许将过滤结果分配给变量。此变量可从当前范围访问,因此您可以随意在同一范围内使用它:
<p>Number of filtered items: {{filteredItems.length}}</p>
<div
ng-show="filteredItems.length > 0"
ng-repeat="item in filteredItems = (items | notEmpty)"
>
{{$index}}
</div>
答案 1 :(得分:2)
最简单的方法可能是在控制器中运行过滤器。像这样:
function MyCtrl($scope, notEmptyFilter)
{
//$scope.items is put into the scope somehow
$scope.filteredItems = notEmptyFilter($scope.items);
}
然后你的HTML看起来像这样:
<div ng-show="filteredItems.length > 0" ng-repeat="item in filteredItems">
</div>
答案 2 :(得分:2)
从Angular 1.3开始,您可以使用ng-repeat
的以下语法:
variable in expression as alias_expression
那是:
<p>Number of filtered items: {{filteredItems.length}}</p>
<div ng-repeat="item in items | notEmpty as filteredItems">
...
</div>
答案 3 :(得分:0)