У меня есть директива, которая помещает динамические данные в qTip через шаблон. Он делает это, выбирая шаблон и используя $compile
на нем (извините coffeescript):
$http.get scope.qtipTemplate, cache: $templateCache
.then (html) ->
clone = $compile html.data
generateQtip text: ->
scope.$apply ->
clone scope
Функция generateQtip
просто создает новый qTip для элемента директивы и помещает первый аргумент в качестве свойства content
объекта options.
Что происходит, хотя есть, каждый раз, когда я открываю qTip, ngRepeat
в шаблоне создает дубликаты списков, даже с limitTo
в качестве фильтра. Пример кода:
<ul>
<li ng-repeat="person in object.people | limitTo:3 track by $index">{{person.name}}</li>
</ul>
Производит следующее при первом открытии qTip:
- Джон Доу
- Джейн Доу
- Джонни Доуи
И это во второй раз:
- Джон Доу
- Джейн Доу
- Джонни Доуи
- Джон Доу
- Джейн Доу
- Джонни Доуи
И это в третий раз:
- Джон Доу
- Джейн Доу
- Джонни Доуи
- Джон Доу
- Джейн Доу
- Джонни Доуи
- Джон Доу
- Джейн Доу
- Джонни Доуи
И так далее, и так далее.
Почему это происходит? Есть идеи? Вот мой полный директивный код в этой ссылке.
Не знаю, почему, но мне просто пришлось переместить $compile
дальше внутри.
$http.get scope.qtipTemplate, cache: $templateCache
.then (html) ->
generateQtip text: ->
scope.$apply ->
$compile(html.data)(scope)