Angular-styleguide: Déplacer $emit, $broadcast ou $on vers une usine ?

Créé le 12 mai 2015  ·  8Commentaires  ·  Source: johnpapa/angular-styleguide

John, dans Y031, vous mentionnez ce qui suit :

Par exemple, lors de la publication et de l'abonnement à des événements à l'aide de $emit, $broadcast ou $on, envisagez de déplacer ces utilisations vers une fabrique et d'appeler à partir du contrôleur.

Pourriez-vous développer un peu sur la façon de mettre en œuvre cela? Un exemple de code serait sympa !

question

Tous les 8 commentaires

Je me suis aussi posé la question et j'ai trouvé la question/réponse stackOverflow suivante : http://stackoverflow.com/questions/14056874/how-to-emit-events-from-a-factory

Je suis assez débutant en ce qui concerne l'angle, donc si c'est une mauvaise pratique, dites-le moi s'il vous plaît. :)

Je pense que c'est aussi selon que l'on soit dans un projet purement angulaire ou dans un projet legacy/hybride.
c'est-à-dire que vous souhaitez partager le même événement à l'intérieur et à l'extérieur du cadre angulaire
transformer le pub/sub en usine facilite l'implémentation alternative pour remplacer $emit, $broadcast.
par exemple http://jonathancreamer.com/an-angular-event-bus-with-postal-js/

J'ai moi aussi du mal à comprendre la phrase suivante de Y031 :

Envisagez d'utiliser $scope dans un contrôleur uniquement lorsque cela est nécessaire. Par exemple, lors de la publication et de l'abonnement à des événements à l'aide de $emit, $broadcast ou $on, envisagez de déplacer ces utilisations vers une fabrique et d'appeler à partir du contrôleur.

Donc la conclusion de la phrase ci-dessus est d'éviter du tout les émissions avec l'utilisation d'usines ? Si oui, je suggérerais une formulation différente.

Je ne pense pas à la communication inter-contrôleurs mais plutôt aux changements d'état majeurs comme la connexion/déconnexion. Puisque je dois peut-être informer à peu près tous les composants à ce sujet si cela semble être une tâche appropriée pour une émission?

Si je comprends bien, je pense que vous comprenez mal ce @sebastianhaas. Ce passage du guide de style suggère de déplacer l'utilisation de $emit , $broadcast , ou $on vers une usine, et non de remplacer l'utilisation _par_ une usine.

Merci pour ta réponse @zachlysobey ! Oui, mais comment y parviendrez-vous ? Supposons que je souhaite mettre à jour les valeurs d'un contrôleur sur certaines diffusions. Si je déplace ces $on dans une usine, je me demande comment informer à nouveau le contrôleur.

Permettez-moi de clarifier ... J'avais une phrase confuse là-dedans. Le but était de n'utiliser $scope qu'en cas de besoin. C'est à ce moment-là que vous devez avoir une portée pour gérer le travail. Cela inclut la diffusion ou l'émission. Ceux-ci sont OK dans le contrôleur si, et seulement si, un message est ce que vous devez envoyer. Mais vous pouvez également envisager d'autres options.

J'essayais de faire attention ici parce que je veux aussi décourager scope.apply dans les contrôleurs.

J'ai supprimé la phrase.

Merci beaucoup!

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

Bekt picture Bekt  ·  13Commentaires

robrothedev picture robrothedev  ·  6Commentaires

jusefb picture jusefb  ·  9Commentaires

nonopolarity picture nonopolarity  ·  5Commentaires

xavhan picture xavhan  ·  5Commentaires