Al escribir directivas en AngularJS nos topamos con las funciones compile, link y controller. Veremos qué son cada una de ellas y cuando usarlas.
- Función compile: Usado para la manipulación de tElements, o template elements, del DOM, por lo tanto manipulaciones que aplican a todos los clones asociados con la directiva. Si usas las funciones link, prelink o postlink, la función compile debe retornar una función link porque el atributo 'link' es ignorado si hay un atributo 'compile' definido.
- Función link: Normalmente usado para registrar listeners en el DOM, como expresiones $watch en el scope), así como actualizar el DOM manipulando los iElement o individual element. Es ejecutado después de que la plantilla ha sido clonada, por ejemplo al usar ng-repeat. Digamos que estamos dentro de <li ng-repeat...>, la función link es ejecutada después que el tElement <li> ha sido clonado en un iElement. $watch permite a la directiva ser notificada de un cambio en una propiedad del scope (asociado a cada instancia), lo que permite a la directiva mostrar un valor de instancia actualizado al DOM.
- Función controller: Debe ser usado cuando otra directiva necesita interactuar con esta directiva.
Reglas de Oro
- Correr código antes de compilar: compile
- Correr código después de compilar: link
Convenciones en Angular
- Lógica del negocio: controller
- Manipulación del DOM: link
Para directivas simples: Usar solo link
No hay comentarios:
Publicar un comentario