Подтвердить что ты не робот

Ng-repeat указать начальный индекс

Как я могу указать индекс, в котором вместо n0 будет запускаться директива ng-repeat?

У меня есть набор результатов, и мне просто нужно указать начальную, отличную от нуля.

4b9b3361

Ответ 1

Не нужно ничего кодировать, angular сделал это с существующим встроенным фильтром limitTo. Просто используйте отрицательный предел. Из документов для аргумента limit:

Длина возвращаемого массива или строки. Если предельное число положительное, ограничение количества элементов с начала источника array/string копируются. Если число отрицательное, предельное число элементы из конца исходного массива/строки копируются. Лимит будет обрезана, если она превысит length array. Если предел равен undefined, вход будет возвращен без изменений.

Итак, вы должны использовать его так, как в шаблоне:

<ul>
   <li data-ng-repeat="i in list | limitTo: (offset - list.length)">{{i}}</li>
</ul>

где offset - ваш начальный индекс. См. Пример plunker.

Существует необязательный аргумент begin, поэтому вам не нужно использовать отрицательный limit, но begin недоступен до angular v1.4, поэтому я придерживался отрицательного limit в моем пример.

Ответ 2

Вы можете создать фильтр

app.filter('startFrom', function() {
    return function(input, start) {
        if(input) {
            start = +start; //parse to int
            return input.slice(start);
        }
        return [];
    }
});

а затем вы просто используете его на ng-repeat:

<div ng-repeat="item in items | startFrom : 2">{{item.Name}}</div>

Ответ 3

Скажите, что у вас есть список items, вы можете сделать это следующим образом:

<div ng-repeat="item in items" ng-if="$index >= myIndex">
   {{item.Name}}
</div>

Ответ 4

Ответы кажутся довольно старыми,

так как angular 1.4.0 фильтр limitTo принимает два параметра

limitTo: (limit) : (begin)

вы можете сказать ng-repeat="item in list | limitTo:50:0"

это, кажется, очень эффективное решение, а использование двух разных фильтров.

https://code.angularjs.org/1.4.0/docs/api/ng/filter/limitTo

Ответ 5

Я бы создал функцию, которая возвращает субаремы желания. Это может идти в контроллере или в функции связи директивы.

<span ng-repeat="item in getSubArray(0, 4)">...</span>

И функция

$scope.getSubArray = function (start, end) {
   return array.slice(start, end);
}

Ответ 6

Это сработало для меня:

<element ng-repeat="round in view.rounds track by $index">
    <span>{{$index + 1}}</span>
</element>

Ответ 7

Это может сделать трюк...

<div ng-repeat="(i, item) in items">
    <p>{{i+1}}</p>
</div>

Ответ 8

Вот результат того, что я искал:

angular.module('starter.filters', []).filter('startFrom', function() {
return function(input, start) {
    if(input) {
        start = +start; //parse to int
        appended = input.slice(0,start);
        initialArray = input.slice(start);
        finalArray= initialArray.concat(appended);
        return finalArray;
    }
    return [];
}
});

спасибо @emanuel