Il y a deux contrôleurs a et b ; il y a un événement de clic dans le contrôleur a. Après avoir cliqué, comment afficher un p dans le contrôle b ?
Par exemple : le contrôleur a est un menu, le contrôleur b est une zone de contenu, cliquez sur différents menus dans a, et contrôlez l'affichage de différents contenus dans b,
Quelques efforts : j'ai essayé le service et l'usine, mais je ne peux que partager des données mais je ne peux pas les déclencher en temps réel
J'ai essayé deux méthodes ici :
.1. Utilisez le propre mécanisme d'événement d'Angular
Utilisé dans le contrôleur, ajoutez a pour envoyer une notification d'événement à b :
2. Utilisez le service pour simuler des événements de rappel. L'essence est d'utiliser le service pour enregistrer une fonction de rappel globale à utiliser entre les contrôleurs
.Hmm. Vous pouvez essayer des mécanismes de diffusion d'événements et de tunneling.
Vous pouvez jeter un œil à ceci
Pour être plus direct, vous pouvez essayer $broadcast et $on, mais l'efficacité sera médiocre
Voyant que ce qui est écrit ci-dessus n'est pas assez pur (mélangé à d'autres considérations), j'ajouterai une version pure.
Démo fournie
Le code est le suivant
1). Créez un bus d'événements pour gérer tous les événements de manière globale
2). Utilisez $broadcast et $emit