在AngularJS应用程序中注册外部模块时,$injector:nomod和$injector:moduler错误
我从Angular开始,我制作了这个页面,它(出于学习目的)将导航条包装在nav HTML5标记的属性指令中。当指令在主js模块中时,一切正常,但当我将代码移动到第二个js文件中,进行所有指示的更改时,我在控制台中遇到下一个错误,导航栏从未显示: angular.js:63未捕获错误:[$injector:modulerr]未能 实例化模块应用程序,原因如下: 错误:[$injector:modulerr]未能实例化模块adminMenu,原因是 致: 错误:[$injector:nomod]模块“adminMenu”不可用!你 模块名称拼写错误或忘记加载。如果注册 模块确保将依赖项指定为第二个 争论 这是我的index.html文件:在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]模
<!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'
}
});
})();