Как я могу установить значение переменной внутри ng-repeat?

0

У меня есть это 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;
  • 1
    Непонятно, что вы подразумеваете под «положением строки», если вы не ссылаетесь на $index . сортировка массива изменяет позиции элементов; если вы каким-то образом сохранили индекс «перед сортировкой», а затем отобразили это значение после сортировки, это не будет полезным значением, поскольку этот элемент больше не обязательно находится в этой позиции массива. Если по какой-то причине необходимо иметь фиксированное значение для каждого объекта, это значение должно быть свойством каждого объекта.
  • 1
    Сохраните положение каждого объекта внутри самого объекта: phs.phrases.forEach(function(phrase, index) {phrase.position = index + 1;}); Или (что гораздо менее эффективно), вызовите функцию, которая находит позицию внутри ng-repeat: {{ getPositionOf(row) }}
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

Сохраните позицию каждого объекта внутри самого объекта:

phs.phrases.forEach(function(phrase, index) {
    phrase.position = index + 1;
}); 

Или (но его гораздо менее эффективно), вызовите функцию, находящую позицию внутри ng-repeat:

{{ getPositionOf(row) }}
  • 0
    Благодарю. Это сработало очень хорошо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню