2017-01-04 2 views
1

Я пытаюсь получить innerHTML в качестве элемента с динамическим содержимым формы в директивы.AngularJS: Не удается получить innerHTML динамического элемента в пределах директивы

Ниже Plunker:

https://plnkr.co/edit/rXVin1LPWzpH4eMqZc7R?p=preview

Один в зеленый это ожидаемый результат. Номер в red - это часть, на которую я надеюсь работать.

Сообщение на console.log результат, результат для el.innerHTML is {{ item }}. Почему он не получает текст, привязанный к нему? Как мне заставить его работать?

+3

Попробуйте добавить SetTimeout в директиве. – digit

+0

Спасибо, @digit! Это один из способов сделать это. https://plnkr.co/edit/8vGmylxVOUerWctZOF7q?p=preview – Giraldi

ответ

4

Это потому, что Angular не закончил обработку дочерних шаблонов от ng-repeat.

Вы можете деформировать код в scope.$evalAsync, чтобы заставить его работать:

link: function(scope, element, attr, content) { 

    scope.$evalAsync(function() { 

    var el = element[0]; 

    // Code 
    }); 
} 

Больше на $evalAsync против $timeout: https://stackoverflow.com/a/17303759/2887841

+0

Спасибо. Прекрасно работает! – Giraldi