Heim >Web-Frontend >js-Tutorial >Wie erleichtern „$scope.$emit' und „$scope.$on' die Ereigniskommunikation in AngularJS-Controllern?

Wie erleichtern „$scope.$emit' und „$scope.$on' die Ereigniskommunikation in AngularJS-Controllern?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-11 11:58:12962Durchsuche

How Do `$scope.$emit` and `$scope.$on` Facilitate Event Communication in AngularJS Controllers?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn