Я пытаюсь получить доступ к переменным, определенным в моем Angular Controller
в html
файле, используя этот контроллер. Но их там нет. Вот мой код:
В MapsController
:
angular.module('Maps').controller('MapsController', ['$scope', '$location', 'MapsService', function($scope, $location, MapsService) {
$scope.number = 5;
... ...
}]);
В Search.html
:
<div class="generic-container" ng-controller="MapsController as ctrl">
number: {{ctrl.number}}
</div>
Когда я запускаю это, number
всегда пусто. Что мне не хватает?
(Это, очевидно, упрощенная версия. Фактически я пытаюсь получить доступ к массиву, который заполняется базой данных. Но, похоже, в принципе идея такая же.)
Вы неправильно используете контроллер в html
<div class="generic-container" ng-controller="MapsController as ctrl">
number: {{ctrl.number}}
</div>
это не сработает, потому что вам не нужно создавать псевдоним для контроллера в html.
<div class="generic-container" ng-controller="MapsController">
number: {{ctrl.number}}
</div>
Также для доступа к любой переменной в области контроллера вам не нужно указывать объект контроллера для доступа к нему.
<div class="generic-container" ng-controller="MapsController">
number: {{number}}
</div>
он должен выполнять эту работу.
Используя contoller as
синтаксиса (MapsController as ctrl
), вы MapsController as ctrl
угловое назначение экземпляра контроллера переменной сферы ctrl
. Поэтому добавьте number
свойства в контроллер вместо области видимости. Измените $scope.number = 5;
to this.number = 5;
и он будет работать.