我在udemy上制作了尝试AngularJS:初学者指南,我遇到了一个奇怪的问题。以下代码适用于课程管理员,但不适用于某些用户。
的index.html
<html lang="en" ng-app='try'>
<head>
<script src="./js/angular.min.js"></script>
<script src="./js/app/app.module.js"></script>
<script src="./js/app/app.config.js"></script>
<script src="./js/app/blog-list/blog-list.module.js"></script>
<script src="./js/app/blog-list/blog-list.component.js"></script>
</head>
<body>
<div class='' ng-controller='BlogListController'></div>
</body>
</html>
app.module.js
'use strict';
angular.module('try', ['blogList']);
app.config.js
'use strict';
angular.module('try', [])
.config(function(){});
博客-list.module.js
'use strict';
angular.module('blogList', []);
博客-list.component.js
'use strict';
angular.module('blogList').
controller('BlogListController', function(){
console.log("hello")
});
我收到错误
名称为“BlogListController”的控制器未注册。
但如果在 blog-list.component.js 文件中,我更改了模块名称:
'use strict';
angular.module('try'). <---- CHANGED THIS
controller('BlogListController', function(){
console.log("hello")
});
有效。
为什么修复前的代码适用于课程管理员?哪个是真正正确的答案?
PS:所有内容都按照index.html
文件所声明的顺序加载。
提前致谢。
答案 0 :(得分:1)
加载try
模块时不依赖blogList
模块,因为app.config.js
包含一个非常微妙的错误。
请注意,angular.module
函数可以通过两种方式使用:检索模块和创建新模块。提供第二个参数时会创建一个新模块。第二个参数包含模块的依赖关系。
这意味着该模块在此应用程序中加载如下:首先,angular.module('try', ['blogList'])
创建一个名为try
的新模块,其依赖于blogList
。然后angular.module('try', []).config(function(){})
创建一个名为try
的新模块,没有任何依赖关系,覆盖之前的try
。
只需删除第二个参数,以便 app.config.js 如下所示:
'use strict';
angular.module('try')
.config(function(){});
它应该始终有效。