Angularjs: 错误: [ng:areq] 参数 'HomeController' 不是一个函数,未定义

2022-08-30 05:41:10

这是我使用angularjs的演示,用于创建服务文件,并将服务添加到控制器。

我的演示有两个问题:

  • 一个是当我把之前我得到这个错误,<script src="HomeController.js"><script src="MyService.js">

错误:[ng:areq] 参数“HomeController”不是函数,未定义

  • 另一个是当我把之前我得到以下错误,<script src="MyService.js"><script src="HomeController.js">

错误: [$injector:unpr] 未知提供程序: 我的服务提供程序 < - 我的服务

我的来源:

文件:Index.html

<!DOCTYPE html>
<html >
    <head lang="en">…</head>
    <body ng-app="myApp">
        …
        <div ng-controller="HomeController">
            <div ng-repeat="item in hello">{{item.id + item.name}}</div>
        </div>

        <script src="Scripts/angular.js"></script>
        <script src="Scripts/angular-route.js"></script>

        <!-- App libs -->
        <script src="app/app.js"></script>    
        <script src="app/services/MyService.js"></script>
        <script src="app/controllers/HomeController.js"></script>
    </body>
</html>

文件:HomeController.js

(function(angular){
    'use strict';

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

    myApp.controller('HomeController',function($scope,MyService){    
        $scope.hello=[];
        $scope.hello = MyService.getHello();
    });
})(window.angular);

文件:MyService.js

(function(angular){
    'use strict';

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

    myApp.service('MyService', function () {
        var hello =[  {id:1,name:'cuong'},
            {id:2,name:'nguyen'}];
        this.getHello = function(){
            return hello;
        };
    });

})(window.angular);

答案 1

这将创建一个新的模块/应用程序:

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

当这访问已创建的模块时(请注意省略了第二个参数):

var myApp = angular.module('myApp');

由于您在两个脚本上都使用第一种方法,因此您基本上覆盖了之前创建的模块。

在正在加载的第二个脚本上,使用 。var myApp = angular.module('myApp');


答案 2

我曾经遇到过这个错误。我的问题是我没有添加FILE_NAME_WHERE_IS_MY_FUNCTION.js

所以我的文件.html从来没有找到我的函数在哪里

添加“文件.js”后,我解决了问题

<html ng-app='myApp'>
    <body ng-controller='TextController'>
    ....
    ....
    ....
    <script src="../file.js"></script>
    </body>
</html>