@Jiakki-js

Как в angular обратится к динамично созданому елементу?

Как получить елемент с директивой которий был создан динамично?
<div test ></div> // динамически создан


App.directive("test", function(){

........
 element. ....... // так не работает


})
  • Вопрос задан
  • 2453 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ух... включаю режим телепата.

У вас предположим есть такой код:

angular.module('app', [])

.directive('foo', function () {
    return function (scope, el, attr) {
        el.append('<div bar></div>');
    }
}
.directive('bar', function () {
    return function (scope, el, attr) {
        console.log('init bar directive');
    }  
});


есть такой шаблон
<div ng-app="app">
    <div foo></div>
</div>


И при запуске приложения мы в консольке не видим нашего консоль лога и расстраиваемся.

А почему так? а потому что angular не отслеживает появление/удаления новых элементов сам по себе, и не пытается на каждый чих искать директивы. Для этого его нужно попросить собрать директиву.

angular.directive('foo', function ($compile) {
    return function (scope, el, attr) {
        var child = $compile('<div bar></div>')(scope);
        el.append(child);
    }
});


Если вам нужно при инициализации директивы это добро делать, проще вынести в template директивы и тогда angular все сам будет делать, так как он внутри всеравно будет делать $compile.

Подробнее тут: https://docs.angularjs.org/api/ng/service/$compile
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы