Angular-styleguide: controlador Como conflictos de nombres de sintaxis

Creado en 5 nov. 2015  ·  9Comentarios  ·  Fuente: johnpapa/angular-styleguide

Hola,

Algo que he descubierto hoy con respecto a la sintaxis controllerAs en Angualr 1. En mi aplicación Angular 1 trato de aplicar la arquitectura de componentes usando directivas para definir componentes individuales. La directiva tiene su propio controlador con controllerAs: 'vm' . También utilizo un enrutador angular-ui para navegar entre vistas. Lo que he descubierto es que si tengo una ruta definida con controllerAs: 'vm' y luego uso una directiva dentro de la vista que define controllerAs: 'vm' , la máquina virtual del controlador principal se sobrescribe. El comportamiento es el mismo incluso con un alcance aislado de la directiva. Sin embargo, si especifico diferentes nombres en el parámetro controllerAs para el enrutador y la directiva (ex controllerAs: 'componentVm' ), todo funciona bien.

Me preguntaba si estoy haciendo algo mal. De lo contrario, y si este es el comportamiento previsto, probablemente sería una buena idea agregar algo a la guía de estilo que mencione posibles conflictos de nombres de controllerAs cuando se usa la arquitectura de componentes en Angular 1 con controladores específicos de directivas.

Atentamente

Jusef

Angular 1 help wanted question

Comentario más útil

Utilice vm hasta que no esté claro. Luego use un nombre más descriptivo.
Eso es lo que me gusta.

Todos 9 comentarios

La guía de estilo ya dice:

"Nota: cuando se trabaja con bases de código más grandes, usar un nombre más descriptivo puede ayudar a aliviar la sobrecarga cognitiva y la capacidad de búsqueda. Evite los nombres demasiado detallados que son engorrosos de escribir".

Así que creo que @johnpapa tiene esto bien cubierto. Quizás una pequeña mejora sería mencionar que el uso de controladores anidados cuenta como "bases de código más grandes".

(Sin embargo ... si está construyendo con componentes bien aislados, probablemente tenga pocos controladores anidados de manera muy explícita, incluso en proyectos grandes).

Esa sección de la guía de estilo es bastante nueva y probablemente podría ampliarse / mejorarse un poco en mi opinión.
Vea esta conversación para obtener más información: https://github.com/johnpapa/angular-styleguide/issues/462

Siéntase libre de hacer un PR para agregar un poco sobre los controladores de anidamiento, si cree que lo ayudará.

Soy un poco nuevo en Angular y acabo de hacer la transición de angular 1.4.8 a 1.5.0. Tuve el mismo problema al anidar una directiva. La directiva principal haría que la propiedad controllerAs como 'vm' fuera sobrescrita por la directiva secundaria. agregar un alcance aislado al niño solucionó el problema para mí, pero puedo ver dónde pueden causar un problema.

Siéntase libre de hacer un PR para agregar un poco sobre los controladores de anidamiento, si cree que lo ayudará.

En mi experiencia al nombrar controladores Angular 1, de las opciones disponibles, tiene más sentido cambiarles el nombre después del componente en sí. Esto solo fallaría con el anidamiento del mismo tipo de componente dentro de un tipo, lo que en la experiencia con una aplicación grande no aparece con frecuencia.

Entonces, para aclarar, sugeriría cambiar esta regla en la guía de estilo para recomendar el uso del nombre del componente.

Utilice vm hasta que no esté claro. Luego use un nombre más descriptivo.
Eso es lo que me gusta.

Tuve el mismo problema que el que jusefb informó en noviembre de 2015. Habíamos cambiado algunas directivas para que fueran controllerAs: 'vm'. En un caso, las directivas controllerAs: 'vm' no tenían un alcance aislado (pero en todos los demás casos, las directivas controllerAs: 'vm' tenían un alcance aislado). Agregar alcance: {}, a la directiva única controllerAs: 'vm' que no tenía un alcance aislado solucionó el problema.

¿Fue útil esta página
0 / 5 - 0 calificaciones