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

Wie erleichtern „$scope.$emit' und „$scope.$on' die Kommunikation zwischen Controllern in AngularJS?

Linda Hamilton
Linda HamiltonOriginal
2024-12-07 11:59:12308Durchsuche

How Do `$scope.$emit` and `$scope.$on` Facilitate Inter-Controller Communication in AngularJS?

Arbeiten mit $scope.$emit und $scope.$on

In AngularJS kann die Kommunikation zwischen Controllern mithilfe von $scope erreicht werden .$emit- und $scope.$on-Methoden. Diese Methoden erleichtern die ereignisbasierte Kommunikation und ermöglichen die Übertragung von Daten oder Signalen von einem Controller zu einem anderen.

$scope.$emit und $scope.$on: Erklärt

  • $scope.$emit: Gibt ein Ereignis aus, das nach oben durch den Bereich weitergegeben wird Hierarchie.
  • $scope.$on: Lauscht auf ein Ereignis mit einem bestimmten Namen und führt eine Rückruffunktion aus, wenn das Ereignis ausgelöst wird.

Eltern-Kind-Scope-Beziehung ist wichtig

Die Wirksamkeit dieser Methoden hängt von der Eltern-Kind-Beziehung zwischen den Scopes ab die beteiligten Verantwortlichen. Es stehen zwei Arten des Ereignisversands zur Verfügung:

  • $scope.$broadcast: Versendet das Ereignis nach unten an alle untergeordneten Bereiche.
  • $scope. $emit: Sendet das Ereignis nach oben durch den Bereich Hierarchie.

Beispielszenarien

1. Beziehung zwischen übergeordnetem und untergeordnetem Bereich:

Wenn der Bereich des ersten Controllers ($scope.$emit) ein übergeordneter Bereich des zweiten Controllers ($scope.$on) ist, sollte der folgende Code funktionieren:

function firstCtrl($scope) {
    $scope.$broadcast('someEvent', [1, 2, 3]);
}

function secondCtrl($scope) {
    $scope.$on('someEvent', function(event, mass) {
        console.log(mass);
    });
}

2. Keine Beziehung zwischen übergeordnetem und untergeordnetem Bereich:

Wenn keine Beziehung zwischen übergeordnetem und untergeordnetem Bereich besteht, können Sie $rootScope in den Controller einfügen und das Ereignis an alle untergeordneten Bereiche übertragen:

function firstCtrl($rootScope) {
    $rootScope.$broadcast('someEvent', [1, 2, 3]);
}

3. Weiterleiten vom untergeordneten zum übergeordneten Controller:

Um ein Ereignis von einem untergeordneten Controller an einen übergeordneten Controller zu senden, verwenden Sie $scope.$emit. Wenn der Bereich des ersten Controllers ($scope.$on) ein übergeordneter Bereich des zweiten Controllers ($scope.$emit) ist:

function firstCtrl($scope) {
    $scope.$on('someEvent', function(event, data) {
        console.log(data);
    });
}

function secondCtrl($scope) {
    $scope.$emit('someEvent', [1, 2, 3]);
}

Durch Verständnis der Funktionsweise von $scope.$emit und $scope. Bei der Arbeit können Sie effektiv zwischen Controllern in Ihren AngularJS-Anwendungen kommunizieren.

Das obige ist der detaillierte Inhalt vonWie erleichtern „$scope.$emit' und „$scope.$on' die Kommunikation zwischen Controllern in AngularJS?. 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