Переменная, определенная в контроллере, недоступна в html

0

Я пытаюсь получить доступ к переменным, определенным в моем 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 всегда пусто. Что мне не хватает?

(Это, очевидно, упрощенная версия. Фактически я пытаюсь получить доступ к массиву, который заполняется базой данных. Но, похоже, в принципе идея такая же.)

Теги:

2 ответа

1
Лучший ответ

Вы неправильно используете контроллер в 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>

он должен выполнять эту работу.

2

Используя contoller as синтаксиса (MapsController as ctrl), вы MapsController as ctrl угловое назначение экземпляра контроллера переменной сферы ctrl. Поэтому добавьте number свойства в контроллер вместо области видимости. Измените $scope.number = 5; to this.number = 5; и он будет работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню