Pregunta Reloj Angular JS $ frente a $ en


Quiero ejecutar una función dentro de una directiva, siempre que haya un cambio de estado en el alcance principal.

La forma obvia de lograr esto es usar transmisiones de eventos ($ emisión) y oyentes ($ en)

Tengo curiosidad si el uso de $ watch es una alternativa a la transmisión de eventos. Si es así, ¿cómo se comparan?

Por lo que yo entiendo, la expresión que se va a observar se evalúa cada $ ciclo de resumen. Entonces, ¿los eventos son más eficientes que ver?


32
2018-05-09 09:38


origen


Respuestas:


los $watch la función se usa para observar variables en el alcance. La herencia del alcance también le permite ver las variables del ámbito principal, por lo que definitivamente es el camino a seguir para su caso de uso. Como dijiste correctamente, $on se usa para ver eventos, que puedes $broadcast a alcances infantiles o $emit al alcance de los padres. Esto le da mucho más control, pero puede causar más errores durante la codificación, ya que puede obtener una actualización de una variable de ámbito desde un punto que no supervisa y olvida notificar a los oyentes.

Aún puede usar eventos cuando no hereda variables de ámbito. Pero tenga cuidado de no contaminar un alcance grande, el uso de servicios puede ser una opción allí, porque inmediatamente se ve si se inyecta o no.

Como una directiva obtiene el alcance en el que está (o hereda de ella), yo diría $watch es una opción mucho más limpia aquí.

Si desea tener un alcance aislado en su directiva, puede pasar argumentos como atributos y $observe ellos.


31
2018-05-09 11:47