$ctrl — это объект модели представления в вашем контроллере. Это $ctrl — это имя, которое вы выбираете (vm — еще одно наиболее распространенное имя), если вы проверите свой код, вы увидите определение как $ctrl = this;
, так что в основном это >this
ключевое слово функции контроллера.
Так что теперь, если вы используете $ctrl.latestMeasurement = 'someValue'
, то это похоже на то, что вы добавляете свойство latestMeasurement
в функцию контроллера.
Теперь, как использовать его в HTML?
Чтобы получить доступ к свойству lastMeasurement в HTML, ваш код должен иметь <h1>{{$ctrl.latestMeasurement}}</h1>
(тег H1 — это просто пример).
Здесь $ctrl отличается от того, что я объяснил выше в части контроллера. Здесь $ctrl — это значение, используемое для свойства controllerAs
контроллера. Но $ctrl
является значением по умолчанию для свойства controllerAs
, поэтому в вашем коде может не быть определено свойство controllerAs, поэтому Angular примет значение по умолчанию $ctrl
в HTML.
Здесь большинство людей путаются. Итак, позвольте мне объяснить,
Предположим, что в новом контроллере вы объявили ключевое слово this
переменной vm
и установили для свойства controllerAs
значение myCtrl
, т.е.
controllerAs: 'myCtrl'
при определении свойств контроллера.
var vm = this;
в вашей функции контроллера.
В этом случае в js вы должны использовать vm
для установки значений, а в HTML вы должны использовать myCtrl
. Например,
в функции контроллера JS vm.test = 'Hello world';
в HTML <span ng-bind="myCtrl.test"></span>
Результат Hello world будет отображаться на вашей странице.
Почему $ctrl, а не $scope?
Концепция объектной модели модели представления представлена в AngularJS 1.5, она фактически является частью перехода на Angular 2, где $scope больше не существует. Итак, в 1.5 они представили новый подход, но не удалили $scope полностью.
Надеюсь, ответ помог.
Основные понятия Javascript см. на странице http://javascriptissexy.com/16-javascript-concepts-you-must-know-well/
Более подробную информацию о концепции AngularJS $ctrl см. на странице https://johnpapa.net/angularjss-controller-as-and-the-vm-variable/
person
Amir Suhail
schedule
11.10.2017