2013-02-10 29 views
12

Powiedzmy mam:angularjs element.innerHTML jest niezdefiniowany od wewnątrz dyrektywy

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); 
      }); 

     } 
    } 
}); 

... potem innerHTML jest niezdefiniowany. Wyobrażam sobie, że wynika to ze sposobu, w jaki Angular przetwarza DOM. Jaki jest właściwy sposób na uzyskanie innerHTML?

Odpowiedz

34

Zmienna element przekazywana do funkcji link jest obiektem jqLite - nie obiektem DOM. Możesz uzyskać obiekt DOM z element[0] (jak mogłeś w jQuery), ale jqLite oferuje metodę dla ciebie: element.html(). Sprawdź numer docs.

+0

Dziękuję. Dokładnie to, czego mi brakowało. –