angularjs无法提供模块

时间:2019-02-23 22:20:29

标签: angularjs

index.html

<!DOCTYPE html>
<html ng-app="intervieweeApp">
<head>
    <meta charset="utf-8" />
    <title>Interviewee Evaluation</title>

    <script src="Scripts/jquery-3.3.1.js"></script>
    <script src="Scripts/angular.js"></script>
    <script src="Scripts/bootstrap.js"></script>
    <script src="Scripts/angular-route.js"></script>
    <script src="Scripts/angular-messages.js"></script>

    <script src="app.js"></script>
    <script src="app.module.js"></script>
    <script src="app.config.js"></script>

    <script src="home-view/home-view.component.js"></script>
    <script src="home-view/home-view.module.js"></script>
</head>
<body>
    <p>does it work?</p>
    <a href="#!home">go to home!</a>
</body>
</html>

app.js

var intervieweeApp = angular.module('intervieweeApp', []);

app.module.js

var intervieweeApp = angular.module('intervieweeApp', [
    'ngRoute',
    'ngMessages',
    'homeView'
]);

app.config.js

angular.
  module('intervieweeApp').
  config(['$routeProvider',
    function config($routeProvider) {
      $routeProvider.
        when('/home', {
          template: '<home-view></home-view>'
        }).
        otherwise('/home');
    }
  ]);

home-view / home-view.module.js

angular.module('homeView', []);

home-view / home-view.component.js

angular.
    module('homeView').
    component('homeView', {
        templateUrl: 'home-view/home-view.template.html',
        controller: ['$http',
            function PhoneListController($http) {
                console.log(15);
            }
        ]
    });

home-view / home-view.template.html

 <p> at home </p>

错误

  

模块“ homeView”不可用!您可能拼错了模块名称,或者忘记了加载它。如果注册模块,请确保将依赖项指定为第二个参数。   https://errors.angularjs.org/1.7.5/$injector/nomod?p0=homeView

当我加载index.html时,出现此错误。我究竟做错了什么?谢谢

1 个答案:

答案 0 :(得分:0)

Take a look at the working DEMO

由于使用script标签导入js文件的顺序,您遇到了问题

创建模块的最佳实践是使用IIFE。这可以帮助您不必考虑在index.html

中导入js文件的顺序。

app.module.ts

(function(){
  angular.module('intervieweeApp', [
    'ngRoute',
    'homeView'
  ]);
})()

home-view.module.ts

(function(){
  angular.module('homeView', []);
})()

大多数开源js插件都使用相同的IIFE概念,因此这是标准做法