Buscar..


Introducción

Esta es una explicación de un patrón común y generalmente se considera la mejor práctica que puede ver en el código de AngularJS.

Entender el propósito de la variable del uno mismo

Cuando use "controlador como sintaxis", le dará a su controlador un alias en el html cuando use la directiva ng-controller.

<div ng-controller="MainCtrl as main">
</div>

Luego puede acceder a las propiedades y métodos desde la variable principal que representa nuestra instancia de controlador. Por ejemplo, accedamos a la propiedad de saludo de nuestro controlador y la mostremos en la pantalla:

<div ng-controller="MainCtrl as main">
    {{ main.greeting }}
</div>

Ahora, en nuestro controlador, debemos establecer un valor en la propiedad de saludo de nuestra instancia del controlador (en lugar de $ scope o algo más):

angular
.module('ngNjOrg')
.controller('ForgotPasswordController',function ($log) {
  var self = this;

  self.greeting = "Hello World";
})

Con el fin de tener la pantalla HTML correctamente que necesitamos para establecer la propiedad de felicitación en esto dentro de nuestro cuerpo del controlador. Estoy creando una variable intermedia llamada self que contiene una referencia a esto. ¿Por qué? Considere este código:

angular
.module('ngNjOrg')
.controller('ForgotPasswordController',function ($log) {
  var self = this;

  self.greeting = "Hello World";

  function itsLate () {
    this.greeting = "Goodnight";  
  }

})

En este código anterior, puede esperar que el texto en la pantalla se actualice cuando se llame al método ItsLate , pero en realidad no lo hace. JavaScript usa las reglas de alcance del nivel de función, por lo que "esto" dentro de su estado actual se refiere a algo diferente que "esto" fuera del cuerpo del método. Sin embargo, podemos obtener el resultado deseado si usamos la propia variable:

 angular
.module('ngNjOrg')
.controller('ForgotPasswordController',function ($log) {
  var self = this;

  self.greeting = "Hello World";

  function itsLate () {
    self.greeting = "Goodnight";  
  }

})

Esta es la belleza de usar una variable "propia" en sus controladores: puede acceder a esta desde cualquier parte de su controlador y siempre puede estar seguro de que hace referencia a su instancia de controlador.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow