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

Cuo*_*.Ho 108 javascript angularjs angularjs-service

这是我使用angularjs的演示,用于创建服务文件,以及向控制器添加服务.

我的演示有两个问题:

  • 一个是<script src="HomeController.js"><script src="MyService.js">我收到此错误之前,

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

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

错误:[$ injector:unpr]未知提供者:MyServiceProvider < - MyService

我的来源:

档案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>
Run Code Online (Sandbox Code Playgroud)

档案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);
Run Code Online (Sandbox Code Playgroud)

档案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);
Run Code Online (Sandbox Code Playgroud)

bml*_*ite 208

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

var myApp = angular.module('myApp',[]);
Run Code Online (Sandbox Code Playgroud)

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

var myApp = angular.module('myApp');
Run Code Online (Sandbox Code Playgroud)

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

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


Jor*_*ego 64

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

所以我的file.html从未找到我的功能所在

一旦我添加"file.js",我解决了问题

<html ng-app='myApp'>
    <body ng-controller='TextController'>
    ....
    ....
    ....
    <script src="../file.js"></script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)


AA1*_*Kas 21

还要确保在body的结束标记之前,在index.html底部的脚本标记内定义控制器.

 <!-- build:js({.tmp,app}) scripts/scripts.js -->
    <script src="scripts/app.js"></script>
    <script src="scripts/controllers/main.js"></script>
    <script src="scripts/controllers/Administration.js"></script>
    <script src="scripts/controllers/Leaderboard.js"></script>
    <script src="scripts/controllers/Login.js"></script>
    <script src="scripts/controllers/registration.js"></script>
Run Code Online (Sandbox Code Playgroud)

如果你的specific.html,specific.js和app.js页面上的所有内容拼写"正确"(相同),这应该可以解决您的问题.


jpr*_*ism 9

每当我错过注射和功能列表之间的","时,几次发生在我身上

app.controller('commonCtrl', ['$scope', '$filter',function($scope,$filter) {

}]);
Run Code Online (Sandbox Code Playgroud)


Kul*_*ngi 5

我也遇到过这个错误,但在我的情况下,这是因为控制器命名约定.我声明了controller: "QuestionController",.state但在控制器定义中,我声明了它

yiiExamApp.controller('questionController' ...
Run Code Online (Sandbox Code Playgroud)

但它应该是

yiiExamApp.controller('QuestionController' ...
Run Code Online (Sandbox Code Playgroud)

希望这有助于面对这个错误的人因为这个愚蠢的错误我浪费了4小时来识别它.


Jam*_*mes 5

我也遇到了同样的错误,我的修复方法是将我的子模块包含在主模块数组中。

var myApp = angular.module('myApp', ['ngRoute', 'childModuleName']);
Run Code Online (Sandbox Code Playgroud)


sig*_*i13 5

如果 ALL ELSE 失败并且您像我一样在 MEAN 堆栈上本地运行 gulp ......只需停止并再次服务!我正在小心翼翼地检查你所有帖子中的所有内容,但无济于事,直到我简单地重新运行 gulp serve。


Dam*_*oda 5

我得到了同样的错误。我像这样定义了java脚本

<script src="controllers/home.js" />
Run Code Online (Sandbox Code Playgroud)

然后我改成了这个

<script src="controllers/home.js"></script>
Run Code Online (Sandbox Code Playgroud)

在此之后,我的问题就解决了。