首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不加载的分布式模块

不加载的分布式模块
EN

Stack Overflow用户
提问于 2014-05-13 14:55:20
回答 2查看 345关注 0票数 0

为这个新手的问题道歉,也可能是显而易见的答案。我尝试将我的应用程序分解成较小的文件,并在运行时使用角的模块加载语法将它们包括在内。谢谢你的帮助和再次道歉,如果这个问题是不够的鼻烟。

我得到的错误是:

代码语言:javascript
复制
Uncaught Error: [$injector:modulerr] Failed to instantiate module myApp due to:
Error: [$injector:modulerr] Failed to instantiate module eventBus due to:
Error: [$injector:nomod] Module 'eventBus' is not available! You either misspelled the modu...<omitted>...1) 

这是我的网页:

代码语言:javascript
复制
<html>
<head>
...
  </head>
  <body ng-app="myApp">

    <!-- Add your site or application content here -->
    <div id="m" class="section app-viewport" bn-document-click="handleClick( $event )" ng-view="" ng-controller="MainController" ng-keydown="keyPress($event);"></div>

    </script>
    <!--[if lt IE 9]>
    <script src="bower_components/es5-shim/es5-shim.js"></script>
    <script src="bower_components/json3/lib/json3.min.js"></script>
    <![endif]-->

    <!-- build:js scripts/vendor.js -->
    <!-- bower:js -->
    <script src="bower_components/jquery/dist/jquery.js"></script>
    <script src="bower_components/angular/angular.js"></script>
    <script src="bower_components/bootstrap/dist/js/bootstrap.js"></script>
    <script src="bower_components/angular-resource/angular-resource.js"></script>
    <script src="bower_components/angular-cookies/angular-cookies.js"></script>
    <script src="bower_components/angular-sanitize/angular-sanitize.js"></script>
    <script src="bower_components/angular-route/angular-route.js"></script>
    <script src="bower_components/matchmedia/matchMedia.js"></script>
    <script src="bower_components/matchmedia-ng/matchmedia-ng.js"></script>
    <!-- endbower -->
    <!-- endbuild -->

        <!-- build:js({.tmp,app}) scripts/scripts.js -->
        <script src="scripts/app.js"></script>
        <script src="scripts/services/eventBus.js"></script>
        <script src="scripts/services/gameState.js"></script>
        <script src="scripts/controllers/mainController.js"></script>
        <script src="scripts/controllers/challengeControllers.js"></script>
        <script src="scripts/controllers/optionControllers.js"></script>
        <script src="scripts/controllers/rescueControllers.js"></script>
        <script src="scripts/controllers/dayListControllers.js"></script>
        <script src="scripts/controllers/bankBalanceControllers.js"></script>
        <script src="scripts/controllers/canvasControllers.js"></script>
        <script src="scripts/controllers/playerControllers.js"></script>
        <script src="scripts/directives/layoutManagerDirectives.js"></script>
        <!-- endbuild -->

</body>
</html>

和app.js:

代码语言:javascript
复制
'use strict';

var myApp = angular.module('myApp', [
    'matchmedia-ng',
    'ngCookies',
    'ngResource',
    'ngSanitize',
    'ngRoute',
    'eventBus',
    'gameState',
    // controllers
    'mainController',
    'challengeControllers',
    'optionControllers',
    'rescueControllers',
    'bankBalanceControllers',
    'canvasControllers',
    'dayListControllers',
    'playerControllers',
    // directives
    'layoutManagerDirectives'
    // services

  ]);



myApp.config(function ($routeProvider) {
  $routeProvider
    .when('/', {
      templateUrl: 'views/main.html',
      controller: 'MainController'
    })
    .otherwise({
      redirectTo: '/'
    });
});

和eventBus.js:

代码语言:javascript
复制
var myApp = angular.module('myApp');

myApp.factory("eventBus", function ($rootScope) {
  var eventBus = {};
  eventBus.message = '';

  eventBus.prepForBroadcast = function(msg) {
    this.message = msg;
    this.broadcastItem(msg);
  };

  eventBus.broadcastItem = function(msg) {
    console.log('eventBus message: ' + eventBus.message);
    $rootScope.$broadcast('handleBroadcast', msg );
  };

  return eventBus;
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-13 15:04:30

您的应用程序正在声明一个名为eventBus的模块的依赖项,但是您正在通过工厂将eventBus定义为一个服务。模块只接受对其他模块的依赖。如果希望以这种方式将eventBus作为模块依赖项来要求,则需要将eventBus脚本更改为如下所示:

代码语言:javascript
复制
var myEventBusModule = angular.module('eventBus', []);

myEventBusModule.factory("eventBusService", function ($rootScope) {
  var eventBus = {};
  eventBus.message = '';

  eventBus.prepForBroadcast = function(msg) {
    this.message = msg;
    this.broadcastItem(msg);
  };

  eventBus.broadcastItem = function(msg) {
    console.log('eventBus message: ' + eventBus.message);
    $rootScope.$broadcast('handleBroadcast', msg );
  };

  return eventBus;
});
票数 1
EN

Stack Overflow用户

发布于 2014-05-13 15:05:49

你的"eventBus“只是你的"myApp”的工厂。不是一个独立的模块。

试试这个:

eventBus.js

代码语言:javascript
复制
var module = angular.module('eventBus', []);
module.factory('eventBus', ["$rootScope", function($rootScope){
   // Content of your factory...
}]);

或者简单地从应用程序模块的依赖项中删除“eventBus”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23634731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档