AngularJS Beginner不是一个函数,未定义

时间:2014-12-17 09:14:59

标签: javascript angularjs

<html>
    <head>
    <script type="text/javascript" src="resources/js/angular.js"></script>
    <script type="text/javascript" src="resources/js/app.js"></script>
    </head>
    <body ng-app>

    <div ng-controller="DatumCtrl">
        <p>{{datum}}</p>
    </div>
    </body>
    </html>

app.js:

var DatumCtrl = function($scope) {
    $scope.datum = new Date();
};

有了这个我得到一个错误:

&#34;错误:[ng:areq]参数&#39; DatumCtrl&#39;不是一个功能,未定义。

我已经从AngularJS的介绍性附件中复制了tis代码,并且没有使用AngularJS的经验。

2 个答案:

答案 0 :(得分:2)

要让控制器首先拥有模块:

var app = angular.module('MyApp',[]);

并使用:ng-app="MyApp"

答案 1 :(得分:1)

此代码示例来自Scot Allen的Controller Basics Tutorial,它将抛出异常,如

  

&#34;错误:[ng:areq]参数&#39; MainController&#39;得到了,不是一个功能   未定义

因此,由于v1.3,你不能拥有全局控制器

的index.html

<!DOCTYPE html>
<html ng-app>

<head>
  <script data-require="angular.js@1.3.6" data-semver="1.3.6" src="https://code.angularjs.org/1.3.6/angular.js"></script>
  <link href="style.css" rel="stylesheet" />
  <script src="script.js"></script>
  <title>{{ 55 * 2}}</title>
</head>

<body ng-controller="MainController">
  <h1> {{message}}</h1>
</body>

</html>

在v1.3之前的script.js

var MainController = function($scope){
  $scope.message = "Hello I am Angular";
};
v1.3之后的

script.js

angular.module('controllerExample', [])
  .controller('MainController', ['$scope', MainController]);

function MainController($scope){
  $scope.message = "Hello I am Angular";
}

并在index.html中

<html ng-app="controllerExample">

see Plunker with solved example