Как вы знаете, после orderBy
таблица теряет свой порядок, а значение $index
- это отсортированный массив, а не исходный массив. Так что если вы передаете items
массив ['orange', 'banana','potato','apple']
к вашему ng-repeat
, после orderBy
на пользовательском интерфейсе вы увидите их, как это:Угловые промежуточные индексы после orderBy
- apple $index = 0
- banana $index = 1
- orange $index = 2
- potato $index = 3
И если вы сейчас хотите мульти выбора элементов между apple($index = 0)
и orange($index = 2)
вы могли бы подумать, что это будет работать:
for(index = 0; index <= 2; index++)
console.log(items[index])
, что неправильно, он будет печатать: [orange, banana, potato]
; не [apple, banana, orange]
.
Я ищу способ получить интервальные индексы отображаемого массива после orderBy, любые идеи?
EDIT: Для уточнения, предположит, что на пользовательском интерфейсе вы отсортировали items
, а затем выбрать яблоко, а затем выберите оранжевый цвет:
✓ apple
banana
✓ orange
potato
Я хочу способ узнать items
между этими двумя выбранными, так что я могу выбрать все между ними, в нашем случае banana
.
Вы можете просто использовать элемент вместо $ index и получить исходный индекс, используя $ scope.items.indexOf (item). для рабочего примера вы можете перейти по следующей ссылке. http: // jsfiddle.net/0uksemjs/ – chandings
Когда вы используете фильтр в представлении, он предназначен для форматирования/изменения данных для целей презентации. Можете ли вы уточнить, почему нужно индексы фильтрованного/упорядоченного массива? И если это больше, чем для презентационных целей, тогда вы должны создать упорядоченную копию массива в контроллере с помощью '$ filter (" orderBy ")' –
@NewDev Мне нужны индексы, потому что я хочу, чтобы несколько элементов выбирали в представлении , поэтому, если я выберу яблоко, а затем сдвиг выберите оранжевый, я хочу, чтобы оранжевый выбирался автоматически, независимо от 'orderBy' – anvarik