Ricerca…


introduzione

Questa è una spiegazione di un modello comune e generalmente considerata la migliore pratica che è possibile vedere nel codice AngularJS.

Comprensione dello scopo del sé variabile

Quando si utilizza "controller come sintassi" si darebbe al controller un alias nell'html quando si utilizza la direttiva ng-controller.

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

È quindi possibile accedere a proprietà e metodi dalla variabile principale che rappresenta l'istanza del controller. Ad esempio, accedi alla proprietà di saluto del nostro controller e visualizzalo sullo schermo:

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

Ora, nel nostro controller, dobbiamo impostare un valore per la proprietà di saluto della nostra istanza controller (diversamente da $ scope o qualcos'altro):

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

  self.greeting = "Hello World";
})

Per poter visualizzare correttamente l'HTML, era necessario impostare la proprietà di saluto su questo all'interno del corpo del controller. Sto creando una variabile intermedia denominata self che contiene un riferimento a questo. Perché? Considera questo codice:

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

  self.greeting = "Hello World";

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

})

In questo codice sopra puoi aspettarti che il testo sullo schermo si aggiorni quando viene chiamato il metodo itsLate , ma di fatto non lo fa. JavaScript utilizza le regole di scoping a livello di funzione in modo che il "questo" all'interno di itsLate si riferisca a qualcosa di diverso che "questo" al di fuori del corpo del metodo. Tuttavia, possiamo ottenere il risultato desiderato se usiamo la variabile automatica :

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

  self.greeting = "Hello World";

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

})

Questa è la bellezza dell'uso di una variabile "autonoma" nei controller: è possibile accedervi da qualsiasi parte nel controller e sempre essere sicuri che faccia riferimento all'istanza del controller.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow