Las aplicaciones angulares usan el atributo ng-click()
en lugar del evento onclick
.¿Por qué necesitamos ng-click?
¿Por qué es esto?
Las aplicaciones angulares usan el atributo ng-click()
en lugar del evento onclick
.¿Por qué necesitamos ng-click?
¿Por qué es esto?
ng-click tiene una expresión angular. Las expresiones angulares se evalúan en el contexto de un angular scope, que está vinculado al elemento que tiene el atributo ng-click o un antecesor de ese elemento.
El lenguaje de expresión angular no incluye instrucciones de control de flujo y no puede declarar variables ni definir funciones. Estas limitaciones significan que las plantillas solo pueden acceder a variables y ejecutar funciones disponibles por un controlador o directiva.
Angular no cambia el significado del atributo onclick
; Agrega el atributo paralelo ng-click
para tomar un Angular expression. onclick
toma el código JavaScript antiguo aunque esté usando Angular.
En términos prácticos, suponga que lo que está haciendo en un controlador de clics es cambiar algunas variables en un ámbito angular o llamar a una función en un ámbito angular que modifique algunas variables. Para hacerlo desde el código JavaScript (como lo que se puso en onclick
) requiere un montón de pasos
scope.$apply
de manera que nada para ver cambios a las variables que ha cambiado se notificóEsto parece:
<a onclick="var $scope = angular.element(event.target).scope(); $scope.yourVar = 42; $scope.$apply()">Go</a>
y con ng-click
y una expresión angular para la asignación, casi todo eso es implícita:
<a ng-click="yourVar = 42">Go</a>
Esta debe ser la respuesta – alaboudi