2015-05-26 94 views
2

所以我想實現一種切換效果的limitTo角度與預定義的數量。通過這我的意思是進來的數據有一個「showMore」的價值是它是一個布爾值。如果屬實,我所在的重複將被限制爲5,否則根本沒有限制。我想知道處理這樣的問題的最佳方法是什麼?所以我有這樣的重複,例如:角度,切換limitTo通過布爾值(自定義limitTo?)

<div ng-repeat="item in filter.values track by $index" class="builder-result-filter-value checkbox" value="item" update-filter="updateFilter"> 

而且我想是這樣的:

$scope.limitValue = 5; 
<div ng-repeat="item in filter.values track by $index | limitTo: limitValue" class="builder-result-filter-value checkbox" value="item" update-filter="updateFilter"> 

但是,過濾數據具有

filter.showMore = boolean; 

它的價值,所以我如果它重複使用limitTo:5,或者根本沒有限制,它會想要這個布爾值來控制它。

我想到了一個辦法做到像

<div ng-if="filter.showMore" ng-repeat="item in filter.values track by $index | limitTo: limitValue"> 
<div ng-if="!filter.showMore" ng-repeat="item in filter.values track by $index"> 

但我想必須有一個更優雅的方式。希望得到任何建議/意見。謝謝!

回答

2

無需使用ng-if。您可以使用limitTo中的表達式,例如limitTo: filter.showMore ? limitValue: filter.values.length,在HTML本身上執行此操作。

標記

<div ng-repeat="item in filter.values | limitTo: filter.showMore ? limitValue: filter.values.length track by $index"> 
+0

非常漂亮又幹淨! – ajmajmajma

0

您可以嘗試在控制器內部執行該邏輯。事情是這樣的:

if (filter.showMore) { 
    $scope.limitValue = 5; 
else { 
    $scope.limitValue = null; 
} 

,並將HTML會是這個樣子:

<div ng-repeat="item in filter.values track by $index | limitTo: limitValue">