Eu li muito sobre o uso desses símbolos na implementação de diretivas personalizadas no AngularJS, mas o conceito ainda não está claro para mim. Quero dizer, o que significa se eu usar um dos valores de escopo na diretiva personalizada?
var mainApp = angular.module("mainApp", []);
mainApp.directive('modalView',function(){
return{
restrict:'E',
scope:'@' OR scope:'&' OR scope:'=' OR scope:'>' OR scope:true
}
});
O que exatamente estamos fazendo com o escopo aqui?
Também não tenho certeza se "scope: '>'" existe ou não na documentação oficial. Tem sido usado no meu projeto.
Edit-1
O uso de "scope: '>'" foi um problema no meu projeto e foi corrigido.
@?
?<
não é apenas compatível com os componentes no 1.5, mas também é compatível com as diretivas. @Homer?
indica o atributo como opcional .>
não está na documentação.<
é para ligação unidirecional.@
binding é para passar strings. Essas seqüências suportam{{}}
expressões para valores interpolados.=
ligação é para ligação de modelo bidirecional. O modelo no escopo pai está vinculado ao modelo no escopo isolado da diretiva.&
binding é para passar um método para o escopo da sua diretiva, para que possa ser chamado dentro da sua diretiva.Quando estamos definindo scope: true na diretiva, o Angular js criará um novo escopo para essa diretiva. Isso significa que quaisquer alterações feitas no escopo da diretiva não serão refletidas novamente no controlador pai.
fonte
<
ligação unidirecional=
ligação bidirecional&
função de ligação@
passar apenas cordasfonte
Quando criamos uma diretiva de cliente, o escopo da diretiva pode estar no escopo Isolado, significa que a diretiva não compartilha um escopo com o controlador; a diretiva e o controlador têm seu próprio escopo. No entanto, os dados podem ser passados para o escopo da diretiva de três maneiras possíveis.
@
literal literal, o valor da string de aprovação, uma ligação unidirecional.=
cadeia literal, pass object, de duas maneiras.&
string literal, chama função externa, pode transmitir dados da diretiva para o controlador.fonte
A documentação do AngularJS sobre diretivas é muito bem escrita para o significado dos símbolos.
Para ser claro, você não pode apenas ter
em uma definição de diretiva. Você deve ter propriedades às quais essas ligações se aplicam, como em:
Eu sugiro fortemente que você leia a documentação e os tutoriais no site. Há muito mais informações que você precisa saber sobre escopos isolados e outros tópicos.
Aqui está uma citação direta da página vinculada acima, sobre os valores de
scope
:Recuperado em 13-02-2017 de https://code.angularjs.org/1.4.11/docs/api/ng/service/ $ compile # -scope-, licenciado como CC-by-SA 3.0
fonte
Ocorreu um problema ao vincular um valor a qualquer um dos símbolos no AngularJS 1.6. Não obtive nenhum valor, apenas
undefined
, embora tenha feito exatamente da mesma maneira que outras ligações no mesmo arquivo que funcionou.O problema era: meu nome de variável tinha um sublinhado.
Isso falha:
Isso funciona:
(Não está totalmente relacionado à pergunta original, mas esse foi um dos principais resultados de pesquisa quando olhei; espero que isso ajude alguém com o mesmo problema.)
fonte