Ereigniskommunikation in Controllern mit $scope.$emit und $scope.$on
$scope.$emit und $scope.$ on sind wesentliche AngularJS-Methoden zur Erleichterung der Ereigniskommunikation zwischen Controllern. Für eine effektive Implementierung ist es jedoch entscheidend, ihr genaues Verhalten zu verstehen.
Die $emit-Methode
$emit löst ein Ereignis von einem Controller aus und sendet es durch die Bereichshierarchie nach oben . Es ermöglicht Controllern, mit übergeordneten Bereichen und möglicherweise anderen untergeordneten Bereichen zu kommunizieren.
Die $on-Methode
$on lauscht auf Ereignisse, die von anderen Controllern ausgegeben werden. Seine Rückruffunktion empfängt ein Ereignisobjekt mit Details zum ausgegebenen Ereignis, einschließlich der weitergegebenen Daten.
Übereinstimmende Ereignisnamen
Bei der Verwendung von $emit und $on ist dies wichtig um passende Ereignisnamen zu verwenden. Der Ereignisname bestimmt, welche Controller das Ereignis empfangen.
Bereichsbeziehungen
Die Beziehung zwischen den Bereichen der Controller bestimmt, welche Kommunikationsmethoden effektiv sind.
Eltern-Kind-Beziehung
In einer Eltern-Kind-Beziehung $broadcast im übergeordneten Controller (Senden) und $on im untergeordneten Controller (hörend) reichen aus.
Beispiel:
function firstCtrl($scope) { $scope.$broadcast('someEvent', [1,2,3]); } function secondCtrl($scope) { $scope.$on('someEvent', function(event, mass) { console.log(mass); }); }
Kein Elternteil -Kind-Beziehung
Wenn keine Eltern-Kind-Beziehung besteht, wird $rootScope in den Controller eingefügt und die Verwendung von $rootScope.$broadcast stellt sicher, dass das Ereignis alle Bereiche erreicht.
Beispiel:
function firstCtrl($rootScope) { $rootScope.$broadcast('someEvent', [1,2,3]); }
Ereignisweiterleitung vom untergeordneten zum übergeordneten Element
Um Ereignisse von untergeordneten an übergeordnete Bereiche zu versenden, verwenden Sie $scope.$emit im untergeordneten Controller und $scope.$on im übergeordneten Controller.
Beispiel:
function firstCtrl($scope) { $scope.$on('someEvent', function(event, data) { console.log(data); }); } function secondCtrl($scope) { $scope.$emit('someEvent', [1,2,3]); }
Das obige ist der detaillierte Inhalt vonWie erleichtern „$scope.$emit' und „$scope.$on' die Ereigniskommunikation in AngularJS-Controllern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!