Here's my code:
<div ng-show="?" ng-repeat="item in items | notEmpty">
</div>
Filter:
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;
}});
I need to show/hide repeated s according the quantity of filtered items in the loop. What is the best way to do it?
Thanks
The easiest way may be to run the filter in your controller. Something like this:
function MyCtrl($scope, notEmptyFilter)
{
//$scope.items is put into the scope somehow
$scope.filteredItems = notEmptyFilter($scope.items);
}
Then your HTML would look something like this:
<div ng-show="filteredItems.length > 0" ng-repeat="item in filteredItems">
</div>
As of Angular 1.3 you can use following syntax for ng-repeat
:
variable in expression as alias_expression
That is:
<p>Number of filtered items: {{filteredItems.length}}</p>
<div ng-repeat="item in items | notEmpty as filteredItems">
...
</div>
I found this
How to display length of filtered ng-repeat data ,
that describes to get the count after filtering the list
ng-repeat
expression allows filtered results to be assigned to a variable. This variable will be accessible from current scope so you can use it in same scope anyway you want:
<p>Number of filtered items: {{filteredItems.length}}</p>
<div
ng-show="filteredItems.length > 0"
ng-repeat="item in filteredItems = (items | notEmpty)"
>
{{$index}}
</div>
©2020 All rights reserved.