2014-09-03 64 views
1

我有一個由angularjs中的ng-repeat生成的列表。如果ng-repeat返回無結果,則顯示ng-show

<ul class="list-group"> 
    <li class="list-group-item" ng-repeat="item in items" ng-show="item.Show"> 
     <h4>Name: {{item.Name}}</h4> 
    </li> 
    <li class="list-group-item" ng-show="items.length == 0"> 
     <h4>No matching items</h4> 
    </li> 
</ul> 

http://plnkr.co/edit/FGc3TTgQfWhx8OtXEQW1?s=0w82sTF5k9duukKJ 在這種過於簡化的例子中,我顯示上一個布爾是否被設置爲真或假的基於 從JSON對象生成的列表。如果沒有項目需要遵守此規則,我如何顯示消息? 我只找到與文本過濾相關的答案,所以我希望這不是重複的。

回答

1

有一個範圍變量來檢查json是否有真正的項目,請檢查下面的代碼。

<li class="list-group-item" ng-repeat="item in items" ng-if="item.Show" ng-show="hasResults" > 
    <h4><p>Name: {{item.Name}}</p></h4> 
</li> 
<li class="list-group-item" ng-hide="hasResults"> 
    <h4>No matching items</h4> 
</li> 

和您的控制器功能

function ItemController($scope, $http) { 
    $scope.hasResults = false; 

    $http.get('items.json').success(function(data) { 
    $scope.items = data; 
    angular.forEach($scope.items, function(item) { 
     if (item.Show && !$scope.hasResults) { 
     $scope.hasResults = true; 
     } 
    }); 
    }); 
} 
1

這應該做的伎倆:

<ul class="list-group"> 
    <li class="list-group-item" ng-repeat="item in items" ng-if="Object.keys(items).length > 0"> 
     <h4>Name: {{item.Name}}</h4> 
    </li> 
    <li class="list-group-item" ng-if="Object.keys(items).length <= 0"> 
     <h4>No matching items</h4> 
    </li> 
</ul>