Ich habe viel über die Verwendung dieser Symbole bei der Implementierung benutzerdefinierter Anweisungen in AngularJS gelesen, aber das Konzept ist mir immer noch nicht klar. Ich meine, was bedeutet es, wenn ich einen der Bereichswerte in der benutzerdefinierten Direktive verwende?
var mainApp = angular.module("mainApp", []);
mainApp.directive('modalView',function(){
return{
restrict:'E',
scope:'@' OR scope:'&' OR scope:'=' OR scope:'>' OR scope:true
}
});
Was genau machen wir hier mit dem Umfang?
Ich bin mir auch nicht sicher, ob "scope: '>'" in der offiziellen Dokumentation vorhanden ist oder nicht. Es wurde in meinem Projekt verwendet.
Edit-1
Die Verwendung von "scope: '>'" war ein Problem in meinem Projekt und wurde behoben.
@?
?<
nicht nur mit Komponenten in 1.5 kompatibel ist, sondern auch mit Direktiven. @Homer the?
bezeichnet das Attribut als optional .>
ist nicht in der Dokumentation.<
ist für die Einwegbindung.@
Bindung dient zum Übergeben von Zeichenfolgen. Diese Zeichenfolgen unterstützen{{}}
Ausdrücke für interpolierte Werte.=
Die Bindung dient zur bidirektionalen Modellbindung. Das Modell im übergeordneten Bereich ist mit dem Modell im isolierten Bereich der Richtlinie verknüpft.&
Beim Binden wird eine Methode in den Geltungsbereich Ihrer Direktive übergeben, damit sie innerhalb Ihrer Direktive aufgerufen werden kann.Wenn wir in der Direktive scope: true festlegen, erstellt Angular js einen neuen Gültigkeitsbereich für diese Direktive. Das bedeutet, dass Änderungen am Richtlinienbereich nicht im übergeordneten Controller berücksichtigt werden.
quelle
<
Einwegbindung=
Zweiwegebindung&
Funktionsbindung@
Übergeben Sie nur Zeichenfolgenquelle
Wenn wir eine Kundenrichtlinie erstellen, kann der Geltungsbereich der Direktive isoliert sein. Dies bedeutet, dass die Direktive keinen Geltungsbereich mit dem Controller teilt. Sowohl die Richtlinie als auch der Controller haben ihren eigenen Geltungsbereich. Daten können jedoch auf drei Arten an den Richtlinienbereich übergeben werden.
@
Zeichenfolgenliteral, der Zeichenfolgenwert und die Einwegbindung verwendet werden.=
String-Literal übergeben werden, Objekt übergeben, 2-Wege-Bindung.&
String-Literal ruft eine externe Funktion auf und kann Daten von der Direktive an die Steuerung übergeben.quelle
Die AngularJS-Dokumentation zu Direktiven ist ziemlich gut geschrieben, was die Symbole bedeuten.
Um klar zu sein, können Sie nicht einfach haben
in einer Richtliniendefinition. Sie müssen Eigenschaften haben, für die diese Bindungen gelten, wie in:
Ich empfehle Ihnen dringend, die Dokumentation und die Tutorials auf der Website zu lesen. Es gibt viel mehr Informationen, die Sie über isolierte Bereiche und andere Themen wissen müssen.
Hier ist ein direktes Zitat von der oben verlinkten Seite zu den Werten von
scope
:Abgerufen am 13.02.2017 von https://code.angularjs.org/1.4.11/docs/api/ng/service/ $ compile # -scope-, lizenziert als CC-by-SA 3.0
quelle
Ich hatte Probleme, einen Wert mit einem der Symbole in AngularJS 1.6 zu binden. Ich habe überhaupt keinen Wert erhalten, nur
undefined
obwohl ich es genauso gemacht habe wie andere Bindungen in derselben Datei, die funktioniert haben.Problem war: Mein Variablenname hatte einen Unterstrich.
Dies schlägt fehl:
Das funktioniert:
(Nicht vollständig mit der ursprünglichen Frage verwandt, aber das war eines der besten Suchergebnisse, als ich es mir ansah. Hoffentlich hilft dies jemandem mit dem gleichen Problem.)
quelle