【问题标题】:Error: [ng:areq] Argument 'myCtrl1' is not a function, got undefined错误:[ng:areq] 参数“myCtrl1”不是函数,未定义
【发布时间】:2016-10-23 00:48:29
【问题描述】:

我在 ng-app 和 myCtrl1.js 中使用状态提供程序,错误 发生像

错误:[ng:areq] 参数 'myCtrl1' 不是函数,未定义,下面是我的代码..

MainApp.js

        'use strict';
        var mainApp=angular.module('mainApp',['ui.router']);
        angular.module('mainApp',['ui.router']).config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
            $urlRouterProvider.otherwise('/');
            $stateProvider
            .state('Emergency Message', {
                url: '/',
                templateUrl:'msg/setting.html',
                controller:'myCtrl1'/*This one generates an error which i have explained above..*/
            })
            .state('setting', {
                url: '/setting',
                templateUrl: 'setting/cchk.html',
                controller:'myCtrl'/*this works*/            
            })
            .state('message', {
                url: '/message',
                templateUrl: 'msg/setting.html',
                controller:'myCtrl1'/*same This one also generates an error which i have explained above..   */   
            });
        }]); 

发生错误的以下文件

myCtrl1.js

        'use strict';
        angular.module('mainApp',[]).controller('myCtrl1',function($scope,$http){
        });

下面是我的索引页

Index.html

这是我的 html 页面,它包含所有 js、css 和所有文件 是必需的。

<!DOCTYPE html>
        <html ng-app="mainApp">
            <head

这是要包含的脚本和 css 文件部分

            </head>
            <body>
                <center>
                    <a id="a1" ui-sref=".message">Message</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    <a id="a2" ui-sref=".setting">Setting</a>
                </center>
                <br><br><br><br>
                <div ui-view></div>





            </body> 
        </html>

这些都是文件,请帮帮我...

【问题讨论】:

  • 你应该像这样注册你的控制器 angular.module('mainApp').controller(...) ,同样在你的配置中你应该做 angular.module('mainApp').config
  • myCtrl 在哪里,可以用?
  • angular.module('mainApp').controller('myCtrl',function($scope,$http){});
  • 是的,因为它有正确的语法。您是否也对其他 myCtrl1 进行了此更改?
  • 我希望你没有忘记包含 myCtrl1.js

标签: angularjs angularjs-directive angular-ui-router


【解决方案1】:

你不应该再次定义依赖关系

angular.module('mainApp').controller('myCtrl1',function($scope,$http){
});

【讨论】:

  • 你可以去掉这个引用 var mainApp= 或者改用 mainApp.controller('myCtrl1',function($scope,$http){ });
【解决方案2】:

而不是angular.module('mainApp',[]),controller(...)

你应该这样做:

angular.module('mainApp').controller(...)

在您使用 angular.module 的其他地方也是如此。 你只需要初始化一个模块一次,就像你做的那样:

var mainApp=angular.module('mainApp',['ui.router']);

在此之后你应该在任何地方使用

angular.module('myApp')

所以你的代码应该是这样的:

'use strict';
var mainApp=angular.module('mainApp',['ui.router']);
angular.module('mainApp').config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise('/');
    $stateProvider
    .state('Emergency Message', {
        url: '/',
        templateUrl:'msg/setting.html',
        controller:'myCtrl1'/*This one generates an error which i have explained above..*/
    })
    .state('setting', {
        url: '/setting',
        templateUrl: 'setting/cchk.html',
        controller:'myCtrl'/*this works*/            
    })
    .state('message', {
        url: '/message',
        templateUrl: 'msg/setting.html',
        controller:'myCtrl1'/*same This one also generates an error which i have explained above..   */   
    });
}]); 

和:

'use strict';
angular.module('mainApp').controller('myCtrl1',function($scope,$http){
});

【讨论】:

  • 我试过了,但它给了我一个错误,比如 angular.js:68 Uncaught Error: [$injector:nomod] Module 'mainApp' is not available!您要么拼错了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。
  • 你有没有把你的配置改成 angular.module('myApp').config
【解决方案3】:

我的问题已经解决,我遇到了这个问题,因为我在附加脚本文件时,所以顺序不正确,所以我遇到了这个问题。

【讨论】:

  • 感谢@gourav 和 Abdou Telb
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-18
  • 2015-11-03
  • 2015-10-10
  • 2016-11-12
  • 2016-03-04
  • 2015-11-18
  • 2015-07-27
相关资源
最近更新 更多