2013-02-10 12 views
12

Скажем, у меня есть:AngularJS element.innerHTML не определен внутри директивы

directives.directive('foo', function() { 
    return { 
     restrict:'A', 
     scope: true, 
     link:function (scope, element, attr) { 

      console.log('innerHTML is ' + element.innerHTML); 

      scope.$watch('update', function (newValue) { 
       console.log('innerHTML is... ' + element.innerHTML); 
      }); 

     } 
    } 
}); 

... тогда innerHTML не определено. Я думаю, это связано с тем, как угловые процессы DOM. Каков правильный способ получить innerHTML?

ответ

34

Переменная, которая передается вашей функции link, представляет собой объект jqLite - не объект DOM. Вы можете получить объект DOM с помощью element[0] (как вы могли бы в jQuery), но jqLite предоставляет вам способ: element.html(). Проверьте docs.

+0

спасибо. Именно то, что мне не хватало. –