无法设置属性' helloMessage'未定义的

时间:2015-01-20 21:02:14

标签: javascript html angularjs

我收到错误后出现错误

  

无法设置未定义的属性'helloMessage'

当我运行以下代码时:

HTML:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" ng-app="app">
<head>
    <title>Hello World</title>
</head>
<body>
    <script src="js/angular.min.js"></script>
    <script src="js/helloWorld.js"></script>
    <h1 ng-controller="HelloWorldCtrl">{{helloMessage}}</h1>

</body>
</html>

Javascript(helloWorld.js):

(function (angular) {

    function HelloWorldCtrl ($scope) {
        $scope.helloMessage = "Hello World";
    }

    angular.module("app", []).controller("HelloWorldCtrl", ["$scope", HelloWorldCtrl()]);

})(angular);

有什么想法吗?我正在使用角度版本1.2.28

1 个答案:

答案 0 :(得分:1)

您不应该调用控制器构造函数,而只是提供控制器函数引用。当您手动调用它时1)您正在调用它并将undefined(返回值)设置为控制器,如果所有调用都成功(在您的情况下它就失败了)。 2)由于手动调用没有依赖注入,否则将由角度DI引擎($ injector)注入

更改

.controller("HelloWorldCtrl", ["$scope", HelloWorldCtrl()]);
                                                        ^___

.controller("HelloWorldCtrl", ["$scope", HelloWorldCtrl]);