复制代码时找不到AngularJS控制器

时间:2017-07-12 07:05:38

标签: javascript angularjs

我在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文件所声明的顺序加载。

提前致谢。

1 个答案:

答案 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(){});

它应该始终有效。