2014-02-28 9 views
11

Ich versuche eine Direktive zu machen, die die Elementbreite/-höhe beeinflusst. Durch Beispiele schauen, die ich gesehen habe, dass Sie Breite/Höhe durch Verweis auf entsprechende Funktion erhalten/setzen können. Zum Beispiel in Link-Funktion der Richtlinie versuche ich zu tun:AngularJs element.height() keine Funktion

function link(scope, element, attr) { 
    var height = element.height(); 
} 

jedoch in meinem Code erhalte ich „Fehler: element.height ist keine Funktion“.

Fehle ich die Referenz zu einem angular.js Modul/Bibliothek oder Dokumentation ist nicht auf dem neuesten Stand?

+1

Welche Dokumentation betrachten Sie? Im offiziellen Dokument ist height() nicht als Methode des Elements aufgeführt: http://docs.angularjs.org/api/ng/function/angular.element –

+0

Die Höhe ist auch ohne JQuery von 'window.innerHeight' erreichbar. –

Antwort

9

Wenn Sie jQuery angular nicht verwenden, ersetzen Sie jQLite durch eine eigene kleinere Bibliothek. jqLite hat keine height() - Funktion für DOM-Elemente. Sie müssen also entweder Ihre eigenen schreiben oder die vollständige Version von jQuery in Ihrem Projekt verwenden.

Die begrenzte jqLite API ist here.

+0

Danke, mein Schlechter - Ich habe benutzerdefinierte Anweisung verwendet und übersehen, dass Höhe von jquery ist. Wollte Jquery wirklich von meinem AngularJS-Projekt ausschließen ... aber es scheint, dass ich es verwenden muss; ( – kape123

35

Geoff Genz ist korrekt, dass jqLite keine height() Methode oder gleichwertig hat, aber es gibt immer noch eine Möglichkeit, die Höhe des ausgewählten Elements zu erhalten. Versuchen Sie folgendes:

var height = element[0].offsetHeight; 

element[0] gibt das reine DOM-Element (ohne jqLite Wrapper), die eine offsetHeight Eigenschaft hat.

+1

) Ich habe diese Antwort an vielen Stellen gefunden, aber es funktioniert nicht für mich. Konsole zeigt '0' Wert – Dimple

+0

Works für angular 1.4.8 – mcy

+0

Das Attribut ist leer – ATrubka

Verwandte Themen