Возникли проблемы с формулировкой вопроса. Если что, прошу поправить.
Есть AngularJS приложение, в которое было решено подключить различные скрипты (для анимаций, уведомлений и т.д., Bootstrap JS, например). Примерная структура приложения:
- index.html - подключение всех JS, CSS файлов и т.д.
- /scripts - скрипты и прочее
- /partials/page.html - шаблон страницы.
- /partials/page2.html - шаблон другой страницы.
Содержимое файла index.html:
...head
<ui-view></ui-view>
...foot
В index.html через ui-view (используется ui-router) подключается файл page.html. В общем-то ничего сложного. Теперь о проблеме - для конкретизации возьмем, к примеру, bootstrap tooltip:
<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="top" title="Tooltip on top">Tooltip on top</button>
Если подключать данный код в файл index.html, то все работает. Если же подключить его в файл page.html, то работать ничего не будет (оно и понятно, для этого рекомендуется использовать директивы - ui.bootstrap, например).
Не работает все потому, что при загрузке jQuery он просматривает DOM-дерево (вместо содержимого page.html у нас в этот момент обычный ui-view, tooltip'а у нас в этот момент само-собой нет, он появляется после загрузки AngularJS шаблона).
Проблему данную можно было бы решить сборкой html шаблонов в js файл (grunt-html2js), что я и сделал. Теперь динамически шаблоны не подключаются, а подключается лишь один js файл, шаблоны грузятся через $templateCache. Вроде бы все дожно работать, но нет, при загрузке другой страницы - например, page2.html, все снова слетает, и приходится перезагружать страницу. Не работает все потому (как вы наверно уже догадались), что page2.html подгружается в DOM-дерево динамически.
Как я понял, сделать refresh DOM-дерева с помощью jQuery нельзя (можно лишь сделать watching функций с помощью on()). Мне нужно, чтобы при загрузке нового шаблона в DOM через ui-view работали все функции, которые связаны с jQuery. Функций, как таковых нет, работа идет через data-аттрибуты.
data-toggle="tooltip" data-placement="top"
Что бы вы могли посоветовать в данном случае? Хотя бы, куда можно обратиться с данной проблемой?