错误:错误:定义控制器时areq Bad Argument

时间:2015-02-07 17:26:12

标签: javascript angularjs

这是我对Angular的第一次尝试。我试图从Internet运行现有的代码,它给出了错误:

Error: error:areq Bad Argument
Argument 'ngAddressListController' is not a function, got undefined

此代码适用于AngularJS< 1.3但它在1.3 +

中给出了问题

代码如下:

HTML

<!doctype html>
<html ng-app="">
<head>
    <title>Ng Addressbook</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.1/angular.min.js"></script>
    <script src="main.js"> </script>
</head>
<body>
<div ng-controller="ngAddressListController">
    <h3>Ng Address Book</h3>
    <div id="container">
        <h3>There are 4{{contacts}} Contacts So far</h3>
        <ul>
            <li>
                <span>First Name</span>
                <span>Last Name</span>
            </li>
        </ul>
    </div>

</div>
</body>
</html>

main.js

function ngAddressListController($scope)
{
    $scope.contacts = [
        {first_name:'Jane', last_name:'Doe'},
        {first_name:'Jhon', last_name:'Doe'}
    ];
}

似乎Angular&lt; 1.3是,我应该坚持下去?

1 个答案:

答案 0 :(得分:1)

我当然不知道,但鉴于你用于定义控制器的方法(具有全局功能)在AngularJS文档中直到1.2.19然后在1.2.20中消失了,我认为这种方法已被弃用。

定义控制器的传统方法如下:

// define an app module
angular.module('myApp', [])
// add a controller to it
.controller('ngAddressListController', ['$scope', function ($scope) {
    $scope.contacts = [
        {first_name:'Jane', last_name:'Doe'},
        {first_name:'Jhon', last_name:'Doe'}
    ];
}]);

然后在您的HTML中,您将使用应用的名称:

<html ng-app="myApp">

此样式在版本1.2.20以后的ngController文档的顶部使用。

https://docs.angularjs.org/guide/controller

另见1.2.19文档中的注释:

  

注意:虽然Angular允许您在全局范围内创建Controller函数,但不建议这样做。在实际应用程序中,您应该为您的应用程序使用Angular模块的.controller方法,如下所示