AngularJS
Het zelf of deze variabele in een controller
Zoeken…
Invoering
Dit is een uitleg van een gemeenschappelijk patroon en wordt algemeen beschouwd als de beste praktijk die u in AngularJS-code kunt tegenkomen.
Het doel van de zelfvariabele begrijpen
Wanneer u "controller als syntaxis" gebruikt, geeft u uw controller een alias in de html wanneer u de ng-controller-richtlijn gebruikt.
<div ng-controller="MainCtrl as main">
</div>
U hebt dan toegang tot eigenschappen en methoden vanuit de hoofdvariabele die onze controller-instantie vertegenwoordigt. Laten we bijvoorbeeld toegang krijgen tot de begroetingseigenschap van onze controller en deze op het scherm weergeven:
<div ng-controller="MainCtrl as main">
{{ main.greeting }}
</div>
Nu moeten we in onze controller een waarde instellen voor de eigenschap groet van onze controller-instantie (in tegenstelling tot $ scope of iets anders):
angular
.module('ngNjOrg')
.controller('ForgotPasswordController',function ($log) {
var self = this;
self.greeting = "Hello World";
})
Om de HTML correct weer te geven, moesten we de begroetingseigenschap hier in onze controller instellen. Ik creëer een tussenliggende variabele met de naam zelf die hiernaar verwijst. Waarom? Beschouw deze code:
angular
.module('ngNjOrg')
.controller('ForgotPasswordController',function ($log) {
var self = this;
self.greeting = "Hello World";
function itsLate () {
this.greeting = "Goodnight";
}
})
In deze bovenstaande code kunt u verwachten dat de tekst op het scherm wordt bijgewerkt wanneer de methode itsLate wordt aangeroepen, maar in feite niet. JavaScript gebruikt scopingregels op functieniveau, dus de "dit" in itsLate verwijst naar iets anders dan "dit" buiten de body van de methode. We kunnen echter het gewenste resultaat te krijgen als we het zelf variabele gebruiken:
angular
.module('ngNjOrg')
.controller('ForgotPasswordController',function ($log) {
var self = this;
self.greeting = "Hello World";
function itsLate () {
self.greeting = "Goodnight";
}
})
Dit is het mooie van het gebruik van een "zelf" -variabele in je controllers - je kunt dit overal in je controller openen en er altijd zeker van zijn dat het naar je controller-instantie verwijst.