Maison >interface Web >js tutoriel >Comment les contrôleurs AngularJS peuvent-ils communiquer entre eux ?

Comment les contrôleurs AngularJS peuvent-ils communiquer entre eux ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-04 19:38:16568parcourir

How Can AngularJS Controllers Communicate With Each Other?

Communication croisée du contrôleur AngularJS

Un contrôleur AngularJS peut-il en appeler un autre ?

Oui, AngularJS fournit plusieurs mécanismes permettant aux contrôleurs de communiquer entre eux autre.

Partager un service

Une approche efficace consiste à partager une instance de service entre les contrôleurs :

angular.module('MyApp', [])
  .service('SomeDataService', function() {
    // Shared data or methods
  })

function FirstController(SomeDataService) {
  // Use the data service...
}

function SecondController(SomeDataService) {
  // Access the same data service instance
}

Émettre des événements sur Scope

Une autre méthode consiste à émettre des événements sur le scope :

function FirstController($scope) {
  $scope.$on('someEvent', function(event, args) {
    // Listen for the event
  });
}

function SecondController($scope) {
  $scope.$emit('someEvent', args);
  // Trigger the event
}

Méthodes de communication supplémentaires

AngularJS prend également en charge :

  • Communication du contrôleur parent-enfant : utilisation de $scope .$parent
  • Communication du contrôleur enfant-parent : utilisation $scope.$parent.$emit()
  • Communication entre contrôleurs via Root Scope : utilisation de $rootScope.$broadcast() ou $rootScope.$emit()
  • Diffusion d'événements personnalisés : Utilisation des méthodes $broadcast et $on d'Angular dans un contrôleur ou une directive

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn