Tengo una directiva de atributo restringida de la siguiente manera:
restrict: "A"
Necesito pasar dos atributos; un número y una función / devolución de llamada, accediendo a ellos dentro de la directiva utilizando el attrs
objeto.
Si la directiva fuera una directiva de elemento, restringida con "E"
podría a esto:
<example-directive example-number="99" example-function="exampleCallback()">
Sin embargo, por razones en las que no entraré, necesito que la directiva sea una directiva de atributos.
¿Cómo paso varios atributos a una directiva de atributo?
javascript
parameters
angularjs
attributes
directive
Distracción
fuente
fuente
scope: false
), alcance nuevo (con herencia prototípica normal, es decir,scope: true
) y alcance aislado (es decir,scope: { ... }
). ¿Qué tipo de alcance crea su directiva?Respuestas:
La directiva puede acceder a cualquier atributo que esté definido en el mismo elemento, incluso si la directiva en sí no es el elemento.
Modelo:
Directiva:
fiddle
Si el valor del atributo
example-number
estará codificado, sugiero usarlo$eval
una vez y almacenar el valor. La variablenum
tendrá el tipo correcto (un número).fuente
Lo hace exactamente de la misma manera que lo haría con una directiva de elemento. Los tendrá en el objeto attrs, mi muestra los tiene enlaces bidireccionales a través del alcance aislado, pero eso no es obligatorio. Si está utilizando un alcance aislado, puede acceder a los atributos con
scope.$eval(attrs.sample)
o simplemente scope.sample, pero es posible que no se definan en el enlace según su situación.Usado como:
fuente
Puede pasar un objeto como atributo y leerlo en la directiva de esta manera:
fuente
{{true}}
pero todavía devuelve el valor de la cadenatrue
.Esto funcionó para mí y creo que es más compatible con HTML5. Debe cambiar su html para usar el prefijo 'data-'
Y dentro de la directiva lea el valor de la variable:
fuente
Si "requiere" 'exampleDirective' de otra directiva + su lógica está en el controlador de 'exampleDirective' (digamos 'exampleCtrl'):
fuente