0

У меня есть ng-repeat в моем приложении и наблюдайте следующее поведение: когда структура данных за ng-repeat заменяется, ng-repeat отображает некоторые элементы double для короткого время, затем возобновляется до нормального состояния. Это смущает моих пользователей и выглядит ужасно. Любая идея, что может вызвать такое поведение?Угловое ng-repeat messing up при замене массива

Вот видео: я нажимаю «Favourisieren» и наблюдаю за элементами в левой боковой панели. Курсор мыши не отображается.

https://nimbus.everhelper.me/client/notes/share/video/317494/o1sARUDmxVOzUZoD4LhyJ0PxsUMTC6cn/none/wz61446123052707/video.webw

А вот исходный код нг-повтора в вопросе. Структура данных user.favourited_term представляет собой простой массив объектов.

 <li ng-if='user && user.favourited_terms' ng-repeat="termOrCategory in user.favourited_terms"> 
      <a ng-click="handleMenuClick($event)"> 
       <i class="fa fa-star-o"></i> 
       <span class="menu-item"> 
        <h2>{{termOrCategory.term.name}}</h2> 
       </span> 
      </a> 
     </li> 
+0

Как вы это делаете, «структура данных за заменой ng-repeat заменена» этой проблемой. Пробовали ли вы альтернативные способы загрузки необходимых данных в объект массива? (angular.copy, loop и т. д.) –

+0

doupt, что это проблема с ng-repeat –

+0

Я бы предложил использовать 'track by $ index' в вашем' ng-repeat', он позволяет угловым создавать связь с элементом DOM и объект javascript. С этой ассоциацией AngularJS не будет уничтожать и повторно создавать узлы DOM без необходимости. – jnthnjns

ответ

0

Я нашел исправление для повторяющихся данных. Поскольку в моем коде не было указаний по трекам, угловые отслеживали элементы массива по индексу массива автоматически. Это не работает при вставке новых элементов.

Проблема может быть легко решена путем вставки дорожки оператором, который однозначно идентифицирует объект в списке, например идентификатор. В моем случае это было немного сложнее, обычно просто трек по e. г. yourObjectName.id достаточно

ng-repeat="termOrCategory in user.favourited_terms track by termOrCategory.term.id + termOrCategory.is_category" 
+0

Это исправлено для меня, спасибо – Felix

 Смежные вопросы

  • Нет связанных вопросов^_^