我正在尝试使用此控制器访问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
始终为空。我错过了什么?
(这显然是一个简化版本。实际上我正在尝试访问一个由数据库填充的数组。但看起来原则上这个想法是一样的。)
答案 0 :(得分:2)
使用contoller as
语法(MapsController as ctrl
)告诉angular将控制器实例分配给范围的变量ctrl
。因此,将属性number
添加到控制器而不是范围。
将$scope.number = 5;
更改为this.number = 5;
即可。
答案 1 :(得分:1)
您在html中使用的控制器错误
<div class="generic-container" ng-controller="MapsController as ctrl">
number: {{ctrl.number}}
</div>
这不起作用,因为您不需要在html中为Controller创建别名。
<div class="generic-container" ng-controller="MapsController">
number: {{ctrl.number}}
</div>
另外,要访问控制器范围内的任何变量,您不需要指定控制器对象来访问它。
<div class="generic-container" ng-controller="MapsController">
number: {{number}}
</div>
它应该完成这项工作。