Eu tenho uma diretiva de atributo restrita da seguinte forma:
restrict: "A"
Eu preciso passar dois atributos; um número e uma função / retorno de chamada, acessando-os dentro da diretiva usando o attrs
objeto.
Se a diretiva fosse uma diretiva de elemento, restrito "E"
a isso:
<example-directive example-number="99" example-function="exampleCallback()">
No entanto, por motivos que não irei abordar, preciso que a diretiva seja uma diretiva de atributo.
Como faço para passar vários atributos em uma diretiva de atributo?
javascript
parameters
angularjs
attributes
directive
Undistraction
fonte
fonte
scope: false
), novo escopo (com herança prototípica normal, ou seja,scope: true
) e escopo isolado (ou seja,scope: { ... }
). Que tipo de escopo sua diretiva cria?Respostas:
A diretiva pode acessar qualquer atributo definido no mesmo elemento, mesmo se a própria diretiva não for o elemento.
Modelo:
Diretriz:
fiddle
Se o valor do atributo
example-number
for codificado, sugiro usar$eval
uma vez e armazenar o valor. A variávelnum
terá o tipo correto (um número).fonte
Você faz isso exatamente da mesma maneira que faria com uma diretiva de elemento. Você os terá no objeto attrs, meu exemplo os tem vinculação bidirecional por meio do escopo isolate, mas isso não é obrigatório. Se estiver usando um escopo isolado, você pode acessar os atributos com
scope.$eval(attrs.sample)
ou simplesmente scope.sample, mas eles podem não ser definidos na vinculação, dependendo da sua situação.usado como:
fonte
Você poderia passar um objeto como atributo e lê-lo na diretiva como esta:
fonte
{{true}}
mas ainda retorna o valor da stringtrue
.Isso funcionou para mim e acho que é mais compatível com HTML5. Você deve alterar o seu html para usar o prefixo 'data-'
E dentro da diretiva, leia o valor da variável:
fonte
Se você "exigir" 'exampleDirective' de outra diretiva + sua lógica está no controlador 'exampleDirective' (digamos 'exampleCtrl'):
fonte