在AngularJS应用程序中注册外部模块时,$injector:nomod和$injector:moduler错误

在AngularJS应用程序中注册外部模块时,$injector:nomod和$injector:moduler错误,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我从Angular开始,我制作了这个页面,它(出于学习目的)将导航条包装在nav HTML5标记的属性指令中。当指令在主js模块中时,一切正常,但当我将代码移动到第二个js文件中,进行所有指示的更改时,我在控制台中遇到下一个错误,导航栏从未显示: angular.js:63未捕获错误:[$injector:modulerr]未能 实例化模块应用程序,原因如下: 错误:[$injector:modulerr]未能实例化模块adminMenu,原因是 致: 错误:[$injector:nomod]模

我从Angular开始,我制作了这个页面,它(出于学习目的)将导航条包装在nav HTML5标记的属性指令中。当指令在主js模块中时,一切正常,但当我将代码移动到第二个js文件中,进行所有指示的更改时,我在控制台中遇到下一个错误,导航栏从未显示:

angular.js:63未捕获错误:[$injector:modulerr]未能 实例化模块应用程序,原因如下:

错误:[$injector:modulerr]未能实例化模块adminMenu,原因是 致:

错误:[$injector:nomod]模块“adminMenu”不可用!你 模块名称拼写错误或忘记加载。如果注册 模块确保将依赖项指定为第二个 争论

这是我的index.html文件:

<!DOCTYPE html>
<html lang="es" ng-app="app">
<head>
    <meta charset="UTF-8">
    <title>Taller - Administración</title>
</head>
<body>
    <header>
        <nav class="topmnu" admin-menu></nav>
    </header>

    
    <script type="application/javascript" src="js/angular/angular.js"></script>
    <script type="application/javascript" src="js/angular/angular-route.min.js"></script>
    <script type="application/javascript" src="js/app.js"></script>
    <script type="application/javascript" src="js/adminMenu.js"></script>
</body>
</html>
这里是我保存指令的地方(adminMenu.js):


我唯一要说的是,我更改了最后一个文件名和模块名,其中包含camelCase、iffens、low-iffens和lowercase,我总是得到相同的结果

将adminMenu.js文件中的
var-app=
更改为
var-adminMenu=
。我觉得名字上有冲突

(function(){
var adminMenu = angular.module('adminMenu', []);

adminMenu.directive("adminMenu", function(){
    return {
        restrict: 'A ',
        templateUrl: 'admin-menu.html',
        controller: function(){
            this.selected = 1;
            this.setSelected = function(selected){
                this.selected = selected;
            };
            this.isSelected = function(testValue){
                return testValue == this.selected;
            };
        },
        controllerAs: 'topMnuCtrl'
    }
});

})()

您已将逻辑包含在自调用函数中,尽管最后一个函数未被调用。内部代码不执行,因此adminMenu模块从未定义过,从而导致错误

将代码更改为:

(function(){
    var app = angular.module('adminMenu', []);

    app.directive("adminMenu", function(){
        return {
            restrict: 'A ',
            templateUrl: 'admin-menu.html',
            controller: function(){
                this.selected = 1;
                this.setSelected = function(selected){
                    this.selected = selected;
                };
                this.isSelected = function(testValue){
                    return testValue == this.selected;
                };
            },
            controllerAs: 'topMnuCtrl'
        }
    });
})();

请注意结尾的()

这正是触发错误的原因!非常感谢你!
(function(){
var adminMenu = angular.module('adminMenu', []);

adminMenu.directive("adminMenu", function(){
    return {
        restrict: 'A ',
        templateUrl: 'admin-menu.html',
        controller: function(){
            this.selected = 1;
            this.setSelected = function(selected){
                this.selected = selected;
            };
            this.isSelected = function(testValue){
                return testValue == this.selected;
            };
        },
        controllerAs: 'topMnuCtrl'
    }
});
(function(){
    var app = angular.module('adminMenu', []);

    app.directive("adminMenu", function(){
        return {
            restrict: 'A ',
            templateUrl: 'admin-menu.html',
            controller: function(){
                this.selected = 1;
                this.setSelected = function(selected){
                    this.selected = selected;
                };
                this.isSelected = function(testValue){
                    return testValue == this.selected;
                };
            },
            controllerAs: 'topMnuCtrl'
        }
    });
})();