У меня есть это ng-repeat:
<div ng-repeat="row in phs.phrasesView = (phs.phrases | orderBy:phs.phrasesOrderBy[phs.phrasesOrderById].key:phs.phrasesSortDirectionId == 1)"
***
*** I want something here to set the value of pos ***
*** based on array1.findIndex(v => v.phraseId == 'def') + 1; ***
***
>
<div>{{ phs.phrases[pos].phraseId }} </div>
<div>{{ phs.phrases[pos].keyword }} </div>
У меня есть следующие данные:
var phs.phrases = [{
"phraseId": "abc",
"keyword": "bb",
"posId": 1
}, {
"phraseId": "def",
"keyword": "bb",
"posId": 1
}, ];
То, что я хотел бы сделать, это найти позицию строки. Я не могу использовать $ index, поскольку хочу найти позицию и показать ее даже после сортировки.
Я знаю, что могу использовать этот код для поиска pos, но как его настроить, чтобы этот код работал для каждой строки ng-repeat?
var pos = array1.findIndex(v => v.phraseId == 'def') + 1;
Сохраните позицию каждого объекта внутри самого объекта:
phs.phrases.forEach(function(phrase, index) {
phrase.position = index + 1;
});
Или (но его гораздо менее эффективно), вызовите функцию, находящую позицию внутри ng-repeat:
{{ getPositionOf(row) }}
$index
. сортировка массива изменяет позиции элементов; если вы каким-то образом сохранили индекс «перед сортировкой», а затем отобразили это значение после сортировки, это не будет полезным значением, поскольку этот элемент больше не обязательно находится в этой позиции массива. Если по какой-то причине необходимо иметь фиксированное значение для каждого объекта, это значение должно быть свойством каждого объекта.phs.phrases.forEach(function(phrase, index) {phrase.position = index + 1;});
Или (что гораздо менее эффективно), вызовите функцию, которая находит позицию внутри ng-repeat:{{ getPositionOf(row) }}