2013-02-10 17 views
12

Lassen Sie uns sagen, ich habe:AngularJS element.innerHTML undefiniert aus Richtlinie

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

     } 
    } 
}); 

... dann innerHTML- nicht definiert ist. Ich kann mir vorstellen, dass dies auf die Art und Weise zurückzuführen ist, wie Angular das DOM verarbeitet. Was ist der richtige Weg, um das innerHTML zu erhalten?

Antwort

34

Die element Variable, die an Ihre link-Funktion übergeben wird, ist ein JqLite-Objekt - kein DOM-Objekt. Sie können das DOM-Objekt mit element[0] erhalten (wie in jQuery), aber jqLite stellt eine Methode für Sie bereit: element.html(). Überprüfen Sie die docs.

+0

Vielen Dank. Genau das, was ich vermisst habe. –