控制器中定义的变量在html中不可用

时间:2016-08-14 07:37:02

标签: angularjs

我正在尝试使用此控制器访问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 个答案:

答案 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>

它应该完成这项工作。