2015-10-08 5 views
-1

У меня есть директива, которая загружает внешний HTML-файл в качестве шаблона, используя шаблон templateURL. В контроллере есть функция, которая полагается на то, что DOM будет полностью выполнена правильно. Функция выдает ошибку, потому что ожидаемый элемент DOM не готов при вызове функции.шаблон шаблона angularjs vs templateURL rendering timing

JS:

app.directive('directiveName',function(){ 
    return{ 
     restrict:'A', 
     replace: true, 
     template: '<div id="elmID"></div>', //** THIS ONE WORKS **// 
     templateURL:"template.html",  //** THIS ONE THROWS AN ERROR **// 
     scope:false, 
     link: function(scope, elm, attrs){}, 
     controller:function($scope){ 
      console.log(document.getElementById('elmID')); 
     } 
}); 

TEMPLATE: template.html

<div id="elmID"></div> 

В действительности мой файл template.html довольно большой, так что я не хочу, чтобы использовать встроенный код. Кто-нибудь знает работу?

+0

'templateUrl', а не' templateURL' , Это чувствительно к регистру – Phil

+0

Кроме того, вы не должны делать вещи DOM в контроллере. Сделайте это в функции link (postLink) – Phil

ответ

3

Ваш код сбой, потому что это templateUrl не templateURL.

Чтобы ответить на ваш вопрос об рендеринге/времени, читайте this article.

в основном, заказ идет:

  1. компилировать
  2. контроллер
  3. предварительно ссылка
  4. пост-ссылка (ака ссылка)
Смежные вопросы