2012-08-10 19 views

Respuesta

66

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.

88

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

  • obtener una referencia al ámbito
  • asignar la variable o llamar a la función
  • llamada 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> 
+0

Esta debe ser la respuesta – alaboudi

Cuestiones relacionadas