2015-03-04 7 views
2

Я создаю опцию плейлиста в проекте, над которым я работаю, и пытаюсь получить раскрывающееся меню для всех видео в списке.AngularJS ng-option get index

, который легко

<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 ​​должно быть выбрано.

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

ответ

7

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

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

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

+0

Вы случайно не знаете, как правильно выбрать видео? если я добавлю ng-модель с нужным видео объектом, она всегда выбирает последний (хотя модель ng имеет тот же объект, что и один из списка) – Kiwi

+1

Как вы устанавливаете модель? Можете ли вы поделиться каким-то кодом, может быть, здесь: http://plnkr.co/edit/0RNYkctZCu9n4PpekFVf?p=preview – dfsq

+0

Хм, видимо, я что-то сделал не так, код в plnkr исправил мою проблему :) – Kiwi

-2

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

<select ng-options="vid as ($index + 1) for vid in playList.Videos track by $index" ng-model="selected" class="browser-default"></select> 
+0

Helpfull, но другой preciser, но медленнее (хотя там и быстро) – Kiwi

+6

'ngOptions' не поддерживает' $ index', это не то же самое, что 'ngRepeat'. – dfsq