Der Umfang in AngularJs hat eine sehr hierarchische und gut benachteilige Struktur. Sie alle haben ein wichtiges $ rootscope (dh die entsprechende Winkelanwendung oder NG-App), und dann werden alle anderen Bereiche von diesem $ rootscope geerbt oder sie sind unter dem Hauptbereich verschachtelt. Oft werden Sie feststellen, dass diese Bereiche keine Variablen teilen oder etwas von einem anderen Prototyp erben.
Wie kommunizieren Sie also in diesem Fall zwischen den Tildern? Eine Option besteht darin, einen Singleton -Dienst im Anwendungsbereich zu erstellen und dann über diesen Dienst die Kommunikation für alle Subscopes zu verarbeiten.
In AngularJS gibt es eine weitere Option: Verwenden Sie die Kommunikation durch Ereignisse im Bereich. Dieser Ansatz hat jedoch einige Einschränkungen; Sie können beispielsweise Ereignisse nicht weit verbreitet auf den Umfang aller Überwachung verbreiten. Sie müssen wählen, ob Sie mit dem Elternbereich oder dem Kinderumfang kommunizieren sollen.
$ on, $ emit und $ Broadcast machen die Übertragung von Ereignissen und Daten zwischen den Controllern einfach.
Beispiele sind wie folgt
HTML -Code
<div ng-controller = "parentCtrl"> <!-Parent-> <div ng-controller = "selfctrl"> <!-self-> <a ng-klick = "click ()"> click me </a> <div ng-controller = "childctrler"> </divroctrler "> <!--> </</</Divroller ="> <!-> </</</</</</</</</</</</</</</</</</</</</</</</</</</</</</</Divrollers ">; <!-Eltern-> </div>
JS -Code
app.controller ('selfctrl', function ($ scope) {$ scope.click = function () {$ scope. Funktion (Ereignis, Daten) {console.log ('parentCtrl', Daten); $ scope. $ on ('to-child', function (Ereignis, Daten) {console.log ('ChildCtrl', Daten); // Das Kind kann den Wert erhalten}); Funktion ($ scope) {$ scope. $ on ('to-parent', Funktion (Ereignis, Daten) {KonsoleEndergebnis
ParentCtrl übergeordnet
Kinderkind
$ emit und $ Broadcast können mehrere Parameter übergeben, und $ on kann auch mehrere Parameter erhalten.
Der Ereignisereignisparameter in der Methode $ on Method, seine Objekteigenschaften und -methoden sind wie folgt
| Ereigniseigenschaften | Zweck |
|---|---|
| Event.TargetScope | Umfang der Ausgabe oder Propagierung des ursprünglichen Ereignisses |
| event.currentScope | Umfang der Ereignisse, die derzeit verarbeitet werden |
| Ereignis.name | Ereignisname |
| Event.StopPropagation () | Eine Funktion, die verhindert, dass Ereignisse weiter ausbreiten (sprudeln/erfassen) (dies funktioniert nur für Ereignisse, die mit $ emit` emittiert werden) |
| Event.PreventDefault () | Diese Methode tut eigentlich nichts, sondern setzt "StandardPrevented" auf true. Es wird nicht den Wert von `DefaultPrevented` überprüft, bis der Implementierer des Ereignishörers Maßnahmen ergriffen. |
| Event.DefaultPrevented | wahr, wenn `PURTDEFAULT` genannt wird |
Es fühlt sich viel bequemer an als die Servicekommunikation in verschiedenen Controllern ~~
Die oben genannten ist eine Zusammenstellung von Informationen zu AngularJs $ on, $ emit und $ sendung. Wir werden in Zukunft weiterhin relevante Informationen hinzufügen. Vielen Dank für Ihre Unterstützung für diese Seite!