2016-06-01 6 views
0

Wie gehe ich vor, um eine Elementbreite in einer Direktive zu erhalten?Gibt es eine Möglichkeit, eine Klassenbreite in einer Direktive zu erhalten?

In meinem Fall wird eine Direktive mehrmals aufgerufen und ich muss den Elementparameter durchlaufen, um zu wissen, welches Element aufgerufen wird.

Allerdings weiß ich nicht, wie man eine Klasse innerhalb dieser Elementbreite bekommt?

Zum Beispiel habe ich eine Klasse namens Etiketten so habe ich etwas in diese Richtung getan:

console.log(element.find(.labels).width()); 

Dies ist jedoch arbeitet sie nicht zurück Null bringt ... obwohl es eine Länge von 1 ist. Code unten:

console.log(element.find('.labels').length); 

So offensichtlich scheint es, zu denken, dass die Klasse ist ein Objekt, sondern von dem, was ich kann sagen, es ist nicht.

Ich möchte auch darauf hinweisen, dass das Element Ich versuche, eine Breite zu erhalten, eine CSS-Eigenschaft verwandeln drauf hat .. Ich glaube nicht, dies wird bewirken, was ich versuche, obwohl zu tun.

angular.module('app') 
 
    .directive('findWidth', function($timeout) { 
 
    return { 
 
     type: "A", 
 
     link: function(scope, element) { 
 
     $timeout(init, false); 
 

 
     function init() { 
 
      var offsetWidth = element[0].offsetWidth; 
 
     } 
 
     }, 
 
    }; 
 
    });

PS:

https://jsfiddle.net/2g13wmxz/

+0

Veröffentlichen Sie mehr Ihrer Richtlinie. HTML und JS. –

+0

hinzugefügt eine jsfiddle meiner Direktive und html –

+0

Was erhalten Sie zurück von console.log (element.find ('. Labels'). Länge) ;? – wdanda

Antwort

0

Ich habe für die Höhe etwas simila getan, hier wäre eine Anpassung für die Breite sein (nicht jedoch getestet) Sie könnten nicht brauchen den Timeout-Trick

Weitere Informationen: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetWidth

+0

Wenn ich das täte, würde es nicht die Breite sein ich suche. Innerhalb der Top-Level-Element gibt es Kinder im Grunde brauche ich das Kind, das einen Klassennamen von Etiketten Breite hat, nicht die Elementparameter Breite –

+0

Ah mein schlecht, nur knapp sein Ziel ur Frage richtig – wdanda

+0

kein Problem Dank für die Hilfe lesen –

Verwandte Themen