Как получить доступ к предыдущей паре ключ / значение в ng-repeat?

0

Приложение My AngularJs читает json файл, имеющий пары ключ/значение. Пара ключей/значений генерируется программой java с использованием HashMap.

Я пытаюсь создать HTML, используя ng-repeat директиву в AngularJs следующим образом.

<li ng-repeat="(line, lineContents) in errorsFromLogFile">
    {{line}} - {{lineContents}} 
</li> 

Я также хочу получить доступ к предыдущей (key/value) паре.

Прошли через эти ссылки stackoverflow. Как получить предыдущий элемент в ng-repeat, сравнить значения внутри ng-repeat и попытаться получить доступ к предыдущему ключу как

{{ errorsFromLogFile[$index-1].line }} 

но ничего не дает. Как получить доступ к предыдущему ключу/значению в этом случае?

Файл json выглядит так:

- errorsFromLogFile: {
     7308: "/tmp/cct7oRJm.s:2099392: Warning: .stabs: description field '11668' too big, try a different debug format",
     7309: "/tmp/cct7oRJm.s:2099393: Warning: .stabs: description field '120d3' too big, try a different debug format",
     7310: "/tmp/cct7oRJm.s:2099394: Warning: .stabs: description field '128a6' too big, try a different debug format",
     7311: "/tmp/cct7oRJm.s:2099395: Warning: .stabs: description field '13046' too big, try a different debug format",
     7312: "/tmp/cct7oRJm.s:2099396: Warning: .stabs: description field '1386c' too big, try a different debug format",
   }
  • 0
    Можете ли вы показать свой файл JSON?
  • 0
    если вы не используете какой-либо фильтр в ng-repeat, то вы можете легко получить трек прошлой записи, используя errorsFromLogFile[$index-1] == errorsFromLogFile[$index]
Показать ещё 5 комментариев
Теги:
angularjs-ng-repeat

1 ответ

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

Возможно, вам придется использовать внутреннее свойство $$prevSibling которое дает предыдущую область $$prevSibling и в этом случае предыдущую область, созданную ng-repeat. Это связано с тем, что вы используете карту объектов, а не массив. errorsFromLogFile[$index-1] не будет работать в массиве объектов, потому что это просто означает, что вы пытаетесь получить доступ к значению индекса свойства из массива, то есть errorsFromLogFile[0], errorsFromLogFile[1] и т.д.

т.е. {{$$prevSibling.line}} и {{$$prevSibling.lineContents}} который должен работать, но не рекомендуется использовать частные свойства в области.

Еще одно лучшее предложение - преобразовать его в массив объектов и просто иметь регулярный синтаксис итерации ng-repeat и получить предыдущий элемент с помощью индекса.

  • 0
    Благодарю. Это решает проблему. Поскольку я использую карту объектов, а не массив, и последовательный доступ к ключам невозможен. Доступ к первому свойству объекта . Теперь я получаю все ключи (строки) от объекта (errorsFromLogFile) и использую ng-repeat для него.

Ещё вопросы

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