2015-04-27 2 views
0

Я передаю параметр в директиву. Это число, которое должно быть использовано на limitTo фильтр для ng-repeatДинамический limitTo фильтр в ng-repeat

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

Вполне возможно, что эта директива не будет нуждаться верхний предел. Я мог бы легко сделать то, что я перечислил выше, но мне не нравится фиксированный верхний предел. Конечно, в моем случае это никогда не ударит, но он чувствует себя неряшливым.

У кого-нибудь есть более элегантное решение?

ответ

1

Вы можете передать Infinity вместо 100000:

<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">

Смежные вопросы