AngularJS ng-option получить индекс

Я делаю вариант плейлиста в проекте, над которым работаю, и пытаюсь получить раскрывающийся список для всех видео в списке.

что легко

<select ng-options="vid.Id for vid in playList.Videos track by video.Id" ng-model="selected" class="browser-default"></select>

но это показывает раскрывающийся список идентификаторов, но теперь я хочу, чтобы он показывал позицию в списке +1;

Таким образом, при воспроизведении видео 5/15 в раскрывающемся списке должно отображаться от 1 до 15 (то есть не от 0 до 14), и следует выбрать 5.

Любая идея о том, как это сделать?


person Kiwi    schedule 04.03.2015    source источник


Ответы (2)


Если вы хотите отобразить индекс текущего видео в качестве текста параметра, то это выражение ngOptions должно помочь:

ng-options="vid as playList.Videos.indexOf(vid)+1 for vid in playList.Videos track by video.Id"

Ключевым моментом здесь является то, что вы можете использовать indexOf метод в массиве Videos для вычисления текущего индекса видео, а затем добавьте 1.

person dfsq    schedule 04.03.2015
comment
вы случайно не знаете, как предварительно выбрать правильное видео? если я добавляю ng-модель с правильным видеообъектом, он всегда выбирает последний (хотя ng-модель имеет тот же объект, что и один из списка) - person Kiwi; 04.03.2015
comment
Как вы устанавливаете модель? Можете ли вы поделиться кодом здесь: plnkr.co/edit/0RNYkctZCu9n4PpekFVf?p=preview - person dfsq; 04.03.2015
comment
Хм, видимо я где-то сделал что-то не так, код в plnkr исправил мою проблему :) - person Kiwi; 04.03.2015

Вы можете отслеживать по индексу массива. $index устанавливается на индекс элемента или ключ.

<select ng-options="vid as ($index + 1) for vid in playList.Videos track by $index" ng-model="selected" class="browser-default"></select>
person Anton Pretorius    schedule 04.03.2015
comment
Полезно, но другой точнее, но медленнее (хотя там оба быстрые) - person Kiwi; 04.03.2015
comment
ngOptions не поддерживает $index, это не то же самое, что ngRepeat. - person dfsq; 04.03.2015