ao definir directivas em AngularJS, existem três formas diferentes de passar em variáveis: nenhum âmbito, âmbito herdado ou âmbito isolado. Se você está usando ou não a sintaxe” controller as ” (e eu espero que você esteja), você ainda tem que decidir qual usar. Neste post, vou explicar as diferenças e sugerir Por que você pode—ou não—quer usar cada um.

no Âmbito da

 scope: false 

Usando este tipo de directiva âmbito é normalmente uma má prática que deve ser evitada. Ao escolher esta opção, está a especificar que a sua directiva não tem âmbito próprio e partilha um âmbito com o seu controlador-mãe. Tudo o que o controlador-mãe alterar ou acrescentar ao âmbito de aplicação estará presente na Directiva, e vice-versa.

meu post anterior demonstrou um exemplo positivo de usar scope: false em Diretivas. Neste exemplo, usei-o para trocar limpo DOM no modelo da minha directiva de nível superior, e todas as directivas estavam a servir o mesmo propósito simples (mudar super-heróis) na minha aplicação. Eu acho que scope: false pode ser uma ótima maneira de introduzir organização e legibilidade em um modelo, mas além disso, usá-lo pode ser um slippery slope para o código de esparguete que é difícil de entender.

âmbito herdado

scope: true

âmbito herdado é muito mais seguro para os dados do seu controlador-mãe do que nenhum âmbito. Tal como acontece com a opção scope: false, tudo o que existe no âmbito do controlador-mãe está presente na Directiva. No entanto, tudo o que a Directiva acrescenta ao âmbito de aplicação não é partilhado com o âmbito de aplicação da Directiva-mãe. Isto protege os dados do controlador-mãe, permitindo simultaneamente que sejam partilhados com a Directiva.

scope: true é útil em situações em que a directiva relativa à criança serve para alterar dados sobre o âmbito de aplicação dos pais. Embora mais seguro que scope:false, usando escopo herdado, especialmente repetidamente, é um cheiro arquitetônico.

âmbito isolado

scope: { myProperty: '='}

âmbito isolado é a melhor prática de todos eles. Com esta opção, o programador define quais atributos são passados para a diretiva. Nada mais é partilhado entre o controlador-mãe e a Directiva.

âmbito isolado encoraja (e reforça) a boa arquitetura de SPA e o desenvolvimento de pequenos componentes focados. O uso de escopo isolado (especialmente com a sintaxe” controller as”) É um sinal de boa arquitetura, e resulta em uma diretriz que será fácil de converter para um componente Angular 2.0.

… Então, qual é que eu uso?

tudo depende! Em uma aplicação Angular perfeita, você usaria escopo isolado em todas as suas diretivas. No entanto, nem todas as aplicações são perfeitas, e nem todas as regras são absolutas.

  • usando nenhum escopo pode ser útil para organizar seus modelos.o uso de escopo hereditário pode ajudá-lo a refinar as diretivas de escopo. Também é útil para gerenciar arquiteturas que se concentram em Alterar dados na árvore de diretriz, em vez de devolver pequenos pedaços de dados atualizados até a árvore de volta para o controlador-mãe.
  • para a migração regular Angular 2. 0, deve começar a trabalhar apenas com o uso de um âmbito isolado na sua aplicação.

Deixe uma resposta

O seu endereço de email não será publicado.