Al definir directivas en AngularJS, hay tres formas diferentes de pasar variables: sin ámbito, ámbito heredado o ámbito aislado. Ya sea que esté usando o no la sintaxis de» controlador como » (y espero que lo esté), todavía tiene que decidir cuál usar. En este post, explicaré las diferencias y sugeriré por qué podrías, o no, querer usar cada una de ellas.

Sin alcance

 scope: false 

El uso de este tipo de alcance de directiva suele ser una mala práctica que debe evitarse. Al elegir esta opción, está especificando que su directiva no tiene ámbito propio y comparte un ámbito con su controlador padre. Todo lo que el controlador padre mute o añada al ámbito de aplicación estará presente en la directiva, y viceversa.

Mi entrada de blog anterior demostró un ejemplo positivo de uso de scope: false en directivas. En este ejemplo, lo utilicé para intercambiar DOM de forma limpia en la plantilla de mi directiva de nivel superior, y todas las directivas servían para el mismo propósito simple (cambiar de superhéroes) en mi aplicación. Creo que scope: false puede ser una gran manera de introducir organización y legibilidad en una plantilla, pero más allá de eso, usarlo puede ser una pendiente resbaladiza para el código espagueti que es difícil de entender.

Ámbito heredado

scope: true

El ámbito heredado es mucho más seguro para los datos del controlador principal que ningún ámbito. Al igual que con la opción scope: false, todo lo que existe en el ámbito del controlador padre está presente en la directiva. Sin embargo, todo lo que la directiva añada al ámbito de aplicación no se comparte con el ámbito principal. Esto protege los datos del controlador padre al tiempo que permite que se compartan con la directiva.

scope: true es útil en situaciones en las que la directiva hijo sirve para mutar datos en el ámbito padre. Aunque es más seguro que scope:false, usar el alcance heredado, especialmente repetidamente, es un olor arquitectónico.

Alcance aislado

scope: { myProperty: '='}

El alcance aislado es la mejor práctica de todos ellos. Con esta opción, el programador define qué atributos se pasan a la directiva. Nada más se comparte entre el controlador padre y la directiva.

El alcance aislado fomenta (e impone) una buena arquitectura de SPA y el desarrollo de componentes pequeños y enfocados. El uso de un ámbito aislado (especialmente con la sintaxis «controlador como») es un signo de buena arquitectura, y resulta en una directiva que será fácil de convertir en un componente Angular 2.0.

So Entonces, ¿Cuál Uso?

todo depende! En una aplicación Angular perfecta, utilizaría un alcance aislado en todas sus directivas. Sin embargo, no todas las aplicaciones son perfectas, y no todas las reglas son absolutas.

  • Usar ningún ámbito puede ser útil para organizar las plantillas.
  • Usar el ámbito heredado puede ayudarle a refactorizar directivas sin ámbito. También es útil para administrar arquitecturas que se centran en mutar datos en el árbol de directivas en lugar de devolver pequeños trozos de datos actualizados en el árbol al controlador padre.
  • Para una migración suave de Angular 2.0, debe comenzar a trabajar para usar solo el ámbito aislado en su aplicación.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.