Suche…


Einführung

Dies ist eine Erklärung für ein allgemeines Muster und allgemein als bewährte Methode, die Sie im AngularJS-Code finden.

Den Zweck der Variable "Selbst" verstehen

Wenn Sie "Controller als Syntax" verwenden, geben Sie Ihrem Controller bei Verwendung der Anweisung ng-controller einen Aliasnamen in der HTML-Datei.

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

Sie können dann auf Eigenschaften und Methoden von der Hauptvariable, die unsere Controller - Instanz darstellt. Lassen Sie uns beispielsweise auf die Begrüßungseigenschaft unseres Controllers zugreifen und diese auf dem Bildschirm anzeigen:

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

Jetzt müssen wir in unserem Controller einen Wert für die Begrüßungseigenschaft unserer Controller-Instanz festlegen (im Gegensatz zu $ ​​scope oder etwas anderem):

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

  self.greeting = "Hello World";
})

Um die HTML-Anzeige korrekt anzeigen zu können, mussten wir die Begrüßungseigenschaft innerhalb dieses Controllerkörpers festlegen. Ich erstelle eine Zwischenvariable namens self , die einen Verweis darauf enthält. Warum? Betrachten Sie diesen Code:

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

  self.greeting = "Hello World";

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

})

In diesem Code können Sie erwarten, dass der Text auf dem Bildschirm aktualisiert wird, wenn die Methode itsLate aufgerufen wird. Dies ist jedoch nicht der Fall. JavaScript verwendet Regeln auf Funktionsebene, sodass das "this" in itsLate auf etwas anderes als "this" außerhalb des Methodenkörpers verweist. Das gewünschte Ergebnis können wir jedoch erhalten, wenn wir die Variable self verwenden :

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

  self.greeting = "Hello World";

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

})

Das ist die Schönheit der Verwendung einer "self" -Variable in Ihren Controllern. Sie können überall auf Ihre Controller zugreifen und immer sicher sein, dass sie auf Ihre Controller-Instanz verweist.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow