Ich habe eine Attribut-Direktive wie folgt eingeschränkt:
restrict: "A"
Ich muss zwei Attribute übergeben; eine Nummer und eine Funktion / einen Rückruf, auf die innerhalb der Direktive mit dem attrs
Objekt zugegriffen wird.
Wenn die Direktive eine Element-Direktive wäre, "E"
könnte ich mich darauf beschränken :
<example-directive example-number="99" example-function="exampleCallback()">
Aus Gründen, auf die ich nicht eingehen werde, muss die Direktive jedoch eine Attribut-Direktive sein.
Wie übergebe ich mehrere Attribute an eine Attributanweisung?
javascript
parameters
angularjs
attributes
directive
Ablenkung
quelle
quelle
scope: false
), neuer Bereich (mit normaler prototypischer Vererbung, dhscope: true
) und isolierter Bereich (dhscope: { ... }
). Welche Art von Geltungsbereich schafft Ihre Richtlinie?Antworten:
Die Direktive kann auf jedes Attribut zugreifen, das für dasselbe Element definiert ist, auch wenn die Direktive selbst nicht das Element ist.
Vorlage:
Richtlinie:
fiddle
Wenn der Wert des Attributs
example-number
fest codiert wird, empfehle ich, ihn$eval
einmal zu verwenden und den Wert zu speichern. Die Variablenum
hat den richtigen Typ (eine Zahl).quelle
Sie machen es genauso wie mit einer Element-Direktive. Sie haben sie im attrs-Objekt. In meinem Beispiel sind sie über den Isolatbereich in beide Richtungen gebunden, aber das ist nicht erforderlich. Wenn Sie einen isolierten Bereich verwenden, können Sie mit
scope.$eval(attrs.sample)
oder einfach auf scope.sample auf die Attribute zugreifen. Abhängig von Ihrer Situation werden diese jedoch möglicherweise nicht beim Verknüpfen definiert.benutzt als:
quelle
Sie können ein Objekt als Attribut übergeben und wie folgt in die Direktive einlesen:
quelle
{{true}}
aber es gibt immer noch den Zeichenfolgenwert zurücktrue
.Dies hat bei mir funktioniert und ich denke, es ist HTML5-kompatibler. Sie sollten Ihr HTML ändern, um das Präfix 'data-' zu verwenden
Und innerhalb der Direktive lesen Sie den Wert der Variablen:
quelle
Wenn Sie 'exampleDirective' von einer anderen Direktive "benötigen" + befindet sich Ihre Logik im Controller von 'exampleDirective' (sagen wir 'exampleCtrl'):
quelle