2015-04-27 35 views
0

我將一個參數傳遞給一個指令。它是要在limitTo過濾器使用的ng-repeat動態limitTo在ng-repeat中過濾

<tr ng-repeat="trans in transactions | limitTo:limit = limit > 0 ? limit : 100000"> 

這可能是該指令將不需要的上限,需要的數量。我可以輕鬆地完成上面列出的內容,但我不喜歡固定的上限。在我的情況下,它永遠不會被擊中,但感覺馬虎。

有沒有人有更優雅的解決方案?

回答

1

可以傳遞的Infinity代替100000:1

<tr ng-repeat="trans in transactions | limitTo:limit = limit > 0 ? limit : 'Infinity'"> 

角的limitTo()即使特殊情況下,這種情況下,以確保它在做正確的事:

function limitToFilter() { 
    return function(input, limit, begin) { 
    if (Math.abs(Number(limit)) === Infinity) { 
     limit = Number(limit); 
    } else { 
     limit = toInt(limit); 
    } 
    if (isNaN(limit)) return input; 
    .... 
0

你可以定義自己的過濾器:

app.filter('optionalLimitTo', function($filter) { 
    function optionalLimitTo(input, optionalLimit) { 
     if (optionalLimit) { 
      return $filter('limitTo')(input, optionalLimit); 
     } 
     else { 
      return input; 
     } 
    } 
    return optionalLimitTo; 
} 
0

另一種解決方法是設置限制等於數組len GHT。

示例:我想表現的分頁表與搜索輸入,並且當輸入值是從「」,分頁應該被禁用,使得它可以顯示在同一視圖中所有過濾項不同。

<input type="text" ng-model="searchLink" placeholder="Search"> 
 
... 
 
<tr ng-repeat="link in links | orderBy:order:reverse | startFrom: (!searchLink || '') && ((currentPage - 1) * pageSize) | limitTo: (!searchLink && pageSize) || links.length | filter:searchLink">