AngularJS
Самостоятельная или эта переменная в контроллере
Поиск…
Вступление
Это объяснение общей картины и, как правило, считается лучшей практикой, которую вы можете увидеть в коде AngularJS.
Понимание цели самопеременной
При использовании «контроллера в качестве синтаксиса» вы должны дать вашему контроллеру псевдоним в html при использовании директивы ng-controller.
<div ng-controller="MainCtrl as main">
</div>
Затем вы можете получить доступ к свойствам и методам из основной переменной, представляющей наш экземпляр контроллера. Например, давайте посмотрим на свойство приветствия нашего контроллера и отобразим его на экране:
<div ng-controller="MainCtrl as main">
{{ main.greeting }}
</div>
Теперь в нашем контроллере нам нужно установить значение свойства приветствия нашего экземпляра контроллера (в отличие от $ scope или чего-то еще):
angular
.module('ngNjOrg')
.controller('ForgotPasswordController',function ($log) {
var self = this;
self.greeting = "Hello World";
})
Для того , чтобы правильно иметь дисплей HTML нам нужно установить свойство приветственного на этом внутри нашего тела контроллера. Я создаю промежуточную переменную с именем self, которая содержит ссылку на это. Зачем? Рассмотрим этот код:
angular
.module('ngNjOrg')
.controller('ForgotPasswordController',function ($log) {
var self = this;
self.greeting = "Hello World";
function itsLate () {
this.greeting = "Goodnight";
}
})
В этом вышеприведенном коде вы можете ожидать, что текст на экране будет обновляться при вызове метода itsLate , но на самом деле это не так. JavaScript использует правила определения уровня функции, поэтому «this» внутри itsLate относится к чему-то другому, что «это» вне тела метода. Однако мы можем получить желаемый результат, если мы используем переменную self :
angular
.module('ngNjOrg')
.controller('ForgotPasswordController',function ($log) {
var self = this;
self.greeting = "Hello World";
function itsLate () {
self.greeting = "Goodnight";
}
})
Это красота использования «собственной» переменной в контроллерах - вы можете получить доступ к ней в любом месте своего контроллера и всегда можете быть уверены, что она ссылается на ваш экземпляр контроллера.