私のコードは次のとおりです。
<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;
}});
ループ内のフィルターされたアイテムの量に応じて、繰り返されるを表示/非表示にする必要があります。それを行う最良の方法は何ですか?
ありがとう
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>
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>
最も簡単な方法は、コントローラーでフィルターを実行することです。このようなもの:
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>