Wie bekomme ich Element css in Direktive ohne jQuery zu benutzen?

7

Ich versuche, Loader mit AngularJS zu schreiben, indem ich Direktive und spin.js benutze (die jQuery nicht benutzt).

Ich weiß, dass AngularJS jQuery lite besitzt. Allerdings kann ich width nicht von element in Direktive abrufen.

Im Grunde brauche ich die Tastenbreite (Inside Directive)

Ich habe es bisher versucht:

%Vor%

Hier gehen wir:

Demo in Plunker

HTML

%Vor%

JS

%Vor%

Danke,

    
Maxim Shoustin 04.11.2013, 09:21
quelle

3 Antworten

19

Verwenden Sie element[0].offsetWidth

.css('width') ist undefiniert, da Sie kein inline CSS haben, das die Breite definiert, und .width ist eine jQuery-Sache.

angular.element verwendet ein 'jqLite', wenn jQuery nicht verfügbar ist und nur eine Teilmenge der Funktionalität bietet. Der berechnete CSS-Stil gehört nicht dazu (und wird es in Kürze nicht mehr geben ) aufgrund von Auswirkungen auf die Leistung).

Es gibt einen anständigen Hinweis darauf, was Sie ohne jQuery hier

tun können     
Ed Hinchliffe 04.11.2013, 09:37
quelle
6

element[0].getBoundingClientRect() ist eine weitere leistungsstarke API.

Sie können bottom , height , left , right , top , width erhalten, indem Sie Folgendes aufrufen:

%Vor%     
Eric Chen 23.04.2014 22:34
quelle
2

Für diejenigen, die am Abrufen einer beliebigen CSS-Eigenschaft interessiert sind, Sie können auf den CSS-Stil eines Angular-Elements in der Verknüpfungsfunktion einer Anweisung zugreifen, indem Sie

drücken %Vor%

Und dann greifen Sie auf den Wert einer beliebigen CSS-Regel wie folgt zu:

%Vor%     
David Salamon 04.01.2017 21:46
quelle

Tags und Links