Estou curioso para saber exatamente o que são os decoradores no AngularJS. Não há muitas informações on-line para os decoradores, exceto um resumo na documentação do AngularJS e uma breve (embora interessante) menção em um vídeo do youtube .
Como dizem os caras do Angular, um decorador é:
Decoração de serviço, permite ao decorador interceptar a criação da instância de serviço. A instância retornada pode ser a instância original ou uma nova instância que delega para a instância original.
Realmente não sei o que isso significa e não sei por que você separaria essa lógica do próprio serviço. Por exemplo, se eu quisesse retornar algo diferente sob condições diferentes, passaria argumentos diferentes para as funções relevantes ou usaria outra função que compartilha esse estado privado.
Eu ainda sou meio noob do AngularJS, então tenho certeza de que são apenas ignorância e / ou maus hábitos que aprendi.
fonte
Os decoradores nos permitem separar preocupações transversais e permitir que os serviços preservem o princípio de responsabilidade única sem se preocupar com o código de "infraestrutura".
Utilizações práticas de decoradores:
Em todos esses casos, limitamos o código no serviço à sua principal responsabilidade.
fonte
decorator
pode interceptar a instância de serviço criada porfactory, service, value, provider
e oferece as opções para alterar algumasinstance(service)
que de outra forma não são configuráveis / com opções.Também pode fornecer instâncias de simulação para fins de teste, por exemplo
$http
.fonte
directive
definições como apresentado por Ben NadelEm palavras simples, podemos dizer que é como um método de extensão. Para Ex. Nós temos uma classe e ela tem dois métodos. Em tempo de execução, queremos adicionar mais métodos a ela e usar o Decorator.
Não podemos usar $ allow.decorator com constantes porque não podemos alterar as constantes que elas estão elevando a propriedade somente leitura.
fonte
Em suma, os decoradores podem ser descritos da seguinte forma: -
Utiliza o
$provide
serviço de forma angular e modifica ou substitui a implementação de outro serviçoExemplo:
Formulários
Além da resposta @JBland.
Configurações de localidade ampla do aplicativo: -
Você pode encontrar um exemplo aqui
Alterando o comportamento padrão e a implementação existente de um serviço por serviço angular: -
Você pode encontrar um exemplo aqui
Comutação de comportamento de uma função em diferentes ambientes.
fonte