Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Надо заставить отработать директивы для динамичски вставленного блока (https://javascript.ru/forum/angular/44529-nado-zastavit-otrabotat-direktivy-dlya-dinamichski-vstavlennogo-bloka.html)

aikus 23.01.2014 12:58

Надо заставить отработать директивы для динамичски вставленного блока
 
/UPD: Решено.

Доброе время!

У нас на проекте сейчас идёт не спешное (очень не спешное) переползание на ангулар. Ввиду этого появляются некоторые проблемы. Вот наткнулся на одну из них.

Код на jquery подгружает какие-то элементы и пихает их в dom. И всё бы ни чего, но среди этих элементов есть директивы англара. Вот и вопрос: как можно сделать так, чтоб директивы отработали до или после вставки кода?

т.е. есть директива <some-link model="Dog" id="1">Тузик</some-link> преобразовалась в <a href="some-prefix/Dog/1">Тузик</a>, как это делается при обычной загрузки страницы.

Если есть функция ангулара, то можно в меня кинуть ссылкой на эту функцию.

dolpheen 23.01.2014 13:20

$compile - компилирует элемент DOMa и возвращает Link Function, которой надо передать scope с необходимыми данными.
http://docs.angularjs.org/api/ng.$compile

P.S. Пример "автономной" вставки разметки на Angular.
http://plnkr.co/edit/tBkcSaXrKzQ6y7VVcAUD?p=preview

jsru_ 23.01.2014 19:34

Цитата:

Сообщение от dolpheen (Сообщение 293601)
$compile - компилирует элемент DOMa и возвращает Link Function

могу ошибаться, но вроде линк надо самомоу возвращать, а иначе undefined

dolpheen 23.01.2014 19:56

Цитата:

Сообщение от jsru_
могу ошибаться, но вроде линк надо самомоу возвращать, а иначе undefined

$compile компилирует и "собирает" все link функции директив переданного ей дерева элементов, все это возвращается в виде специальной функции, при передаче scope которой производится вызов всех link функции собранных при компиляции (вызов производится согласно структуре DOM)

jsru_ 23.01.2014 20:07

Цитата:

Сообщение от dolpheen (Сообщение 293678)
$compile компилирует и "собирает" все link функции директив переданного ей дерева элементов, все это возвращается в виде специальной функции, при передаче scope которой производится вызов всех link функции собранных при компиляции (вызов производится согласно структуре DOM)

ну я к тому, что надо ручками прописывать return function (scope, element, attrs, controller) {, сам он ничего не вернет

dolpheen 23.01.2014 20:23

Цитата:

Сообщение от jsru_
ну я к тому, что надо ручками прописывать return function (scope, element, attrs, controller) {, сам он ничего не вернет

Это мы прописываем при описании директивы (при этом существует 3 варианта - возвратить функцию или свойство link объекта описания директивы или возвращая функцию из метода compile).
$compile - сервис ангуляра, который потом использует эти функции, которые мы прописали в директивах. (См.ссылку на пример выше на plnkr)

aikus 24.01.2014 07:47

Цитата:

Сообщение от dolpheen (Сообщение 293601)
P.S. Пример "автономной" вставки разметки на Angular.
http://plnkr.co/edit/tBkcSaXrKzQ6y7VVcAUD?p=preview

За пример, спасибо. Но оказалось, что у нас пробошен слушатель в ангулар (где собсвенно $compile и отрабатывает), и просто после вставки контенте нужно було создать соответсвующее событие. Этим и решил.

Но приведённый пример, это именно то, что я собственно и искал.
Проблема решена.


Часовой пояс GMT +3, время: 08:04.