Angular-styleguide: Movendo $ emit, $ broadcast ou $ para uma fábrica?

Criado em 12 mai. 2015  ·  8Comentários  ·  Fonte: johnpapa/angular-styleguide

John, em Y031, você menciona o seguinte:

Por exemplo, ao publicar e inscrever eventos usando $ emit, $ broadcast ou $ on, considere mover esses usos para uma fábrica e invocar a partir do controlador.

Você poderia expandir um pouco sobre como implementar isso? Um exemplo de código seria bom!

question

Comentários muito úteis

Todos 8 comentários

Eu também me perguntei e encontrei a seguinte pergunta / resposta stackOverflow: http://stackoverflow.com/questions/14056874/how-to-emit-events-from-a-factory

Eu sou bastante iniciante no que se refere a angular, então, se esta for uma má prática, alguém por favor me diga. :)

Eu acho que também depende se você está em um projeto totalmente angular ou em um projeto legado / híbrido.
ou seja, você deseja compartilhar o mesmo evento dentro e fora da estrutura Angular
transformar o pub / sub em uma fábrica torna a implementação alternativa mais fácil para substituir $ emit, $ broadcast.
por exemplo, http://jonathancreamer.com/an-angular-event-bus-with-postal-js/

Também estou tendo problemas para entender a seguinte frase de Y031 :

Considere usar $ scope em um controlador apenas quando necessário. Por exemplo, ao publicar e inscrever eventos usando $ emit, $ broadcast ou $ on, considere mover esses usos para uma fábrica e invocar a partir do controlador.

Portanto, a conclusão da frase acima é evitar a transmissão de qualquer coisa com o uso de fábricas? Nesse caso, sugiro uma formulação diferente.

Não estou pensando em comunicação entre controladores, mas sim em grandes mudanças de estado, como login / logout. Já que possivelmente tenho que informar praticamente todos os componentes sobre isso, parece uma tarefa adequada para uma transmissão?

Se bem entendi, acho que você não entendeu bem isso @sebastianhaas. Esta passagem no guia de estilo sugere mover o uso de $emit , $broadcast ou $on para uma fábrica, não substituindo o uso _with_ uma fábrica.

Obrigado pela sua resposta @zachlysobey! Sim, mas como você faria isso? Vamos supor que eu queira atualizar os valores em um controlador em certas transmissões. Se eu mover esses $on para uma fábrica, fico imaginando como informar o controlador novamente.

Deixe-me esclarecer ... Eu tinha uma frase confusa lá. O objetivo era usar apenas $ scope quando necessário. Que é quando você tem que ter um escopo para lidar com o trabalho. Isso inclui transmissão ou emissão. Eles estão OK no controlador se, e somente se, uma mensagem for o que você precisa enviar. Mas você também pode considerar outras opções.

Eu estava tentando ser cuidadoso aqui porque quero desencorajar o scope.apply em controllers também.

Eu removi a frase.

Muito obrigado!

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

TradeArcher2020 picture TradeArcher2020  ·  4Comentários

amiceli picture amiceli  ·  7Comentários

MrOutput picture MrOutput  ·  5Comentários

philmerrell picture philmerrell  ·  10Comentários

bampakoa picture bampakoa  ·  3Comentários