AngularJS : événement de diffusion de la directive
J'ai vu des gens qui font cela à partir de la mesure dans leur code:
$rootScope.$broadcast('someEvent', someParameter);
et puis dans certains contrôleur:
$rootScope.$on('someEvent', function(event, e){ /* implementation here */ });
Maintenant, j'aimerais broacast un événement à partir d'une directive. Est-ce une bonne pratique de la diffuser à rootScope niveau ? Je voudrais gérer cet événement dans un contrôleur. Puis-je utiliser $portée, ou dois-je continuer à écouter sur $rootScope ?
- avez-vous isolé champ d'application de la directive de l'utilisation de la portée parent de contrôleur
Vous devez vous connecter pour publier un commentaire.
J'aurais la directive appeler une méthode sur le contrôleur, qui est spécifié dans le code HTML où la directive est utilisée:
Pour une directive qui utilise un isolat portée:
Pour une directive qui n'utilise pas un isolat portée:
Il est généralement une bonne idée de ne pas utiliser le $rootScope comme il est mondial et il ne faut pas polluer sauf si vous savez vraiment ce que vous faites. Je vous recommande de lire cet article sur la communication entre les services, les directives et les contrôleurs.
$scope.$emit
dans la directive et$scope.$on
dans le contrôleur de parentVoici un Tapuscrit exemple de comment pour appeler une méthode sur le contrôleur intégré la directive. La chose la plus importante à noter est que la directive du nom du paramètre pour votre rappel utilise un & lorsqu'il est défini, et lors de l'appel de rappel que vous ne devez pas utiliser les paramètres positionnels, mais au lieu d'utiliser un objet avec des propriétés ayant les noms des paramètres de la cible.
Registre de la directive lorsque vous créez votre application module:
Le code d'enregistrement est la suivante:
La directive du contrôleur devrait ressembler à ceci
De la directive HTML ressemblerait à quelque chose comme ceci
La vue principale aura une instance de votre directive comme
Maintenant, tout ce que vous devez sur votre MainController est une méthode