Подсказка angular-strap не работает в ng-repeat

Вопрос: есть ли ошибка в angular-strap? Или я неправильно понимаю, как работает Angular, и это ожидаемо?

Я создал плункер, чтобы продемонстрировать поведение.

Что я хочу: я хочу показывать разные всплывающие подсказки для каждого элемента в ng-repeat.

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

Условия:

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

Мысли: если я урежу это, "первая загрузка" работает нормально. После этого нет. Я предполагаю, что происходит этап компиляции после первого раунда добавления элементов в ng-repeat. В этот момент код всплывающей подсказки angular-strap видит атрибуты директивы и настраивает эти всплывающие подсказки и шаблон содержимого. Последующие изменения в ng-repeat пропускаются angular-strap (хотя я вижу в консоли, что вызов из bs-popover=tooltip(item) действительно запускается каждый раз, когда обновляется список ng-repeat). Но я все еще в тупике и задаюсь вопросом, могу ли я обойти это поведение.

Как разрешить динамические всплывающие подсказки в элементах, добавленных в ng-repeat?


person Tyler Collier    schedule 09.02.2014    source источник
comment
вроде работает (_popover.html) <div class="popover-content">{{content}}</div> Здесь используется {{ }} вместо ng-bind... совершенно странно   -  person calebboyd    schedule 09.02.2014
comment
Пожалуйста, добавьте это в качестве ответа. Однако этот метод обходит шаблон содержимого. Обратите внимание, что раздел «Вот всплывающее окно, в котором я бы показывал динамические поиски» (синий текст) отсутствует при использовании {{content}} В любом случае, я хотел бы знать, что происходит, и стоит ли сообщать об этом angular-strap.   -  person Tyler Collier    schedule 09.02.2014


Ответы (1)


Кажется, это работает в _popover.html

<div class="popover-content">{{content}}</div>

Это использование {{ }} вместо ng-bind... работает очень странно.

При дальнейшем расследовании... Вероятно, это происходит где-то здесь:

https://github.com/mgcrea/angular-strap/blob/master/src/tooltip/tooltip.js#L83

Хотя я пока не знаю, где/как/что.

Обновить

Итак, ошибка (в Angular-Strap) связана с кэшированием вашего шаблона. Первоначальный поиск (через http) работает нормально. Но кэширует их как массив, а при извлечении из кэша (последующие добавления) получает массив. Который не имеет .data свойства значит твой шаблон пуст, а твой ng-bind удален..

person calebboyd    schedule 09.02.2014
comment
Да! Я только что сам это видел. Спасибо, и я сообщу об этом angular-strap. - person Tyler Collier; 09.02.2014
comment
Хм... Ну, это странно.. Мы оба были в теге для последнего выпуска. Мастер исправил это github.com/mgcrea/angular-strap/commit/ Я бы просто снял это... - person calebboyd; 09.02.2014
comment
Это исправление было для modal. Исправление для всплывающей подсказки: github.com/mgcrea/angular-strap/commit/. Я позволю @mcgrea закрыть проблему, если он хочет. - person Tyler Collier; 09.02.2014