使用require.js的Angular在Firefox和IE中不起作用

时间:2013-11-04 15:49:43

标签: angularjs requirejs

我遇到FireFox和Opera无法渲染我的应用程序的问题。虽然Chrome和IE工作得很好。

我认为我已经缩小了问题范围,并且在执行此操作后会发生:

<script data-main="js/main" src="lib/require/require-2.1.0.js"></script>

这是js / main的内容:

 require.config({
  paths: {
    jquery: '../lib/jquery/jquery-1.8.2.min',
    bootstrap: '../lib/bootstrap/js/bootstrap',
    underscore: '../lib/underscore/underscore',
    angular: '../lib/angular/angular',
    angularResource: '../lib/angular/angular-resource',
    text: '../lib/require/text'
  },
  shim: {
    'angular' : {'exports' : 'angular'},
    'angular-resource' : {deps:['angular']},
    'bootstrap': {deps:['jquery']},
    'underscore': {exports: '_'}
  },
  baseUrl: 'js/',

  priority: [
    "angular"
  ],
  urlArgs: 'v=1.1'
});

require( [
  'angular',
  'app',
  'services/services',
  'controllers/controllers',
  'controllers/navbar',
  'filters/filters',
  'directives/directives',
  'routes'
], function(angular, app) {   

  angular.element(document).ready(function () { //BREAKPOINT SET HERE
      console.log("Getting ready to bootstrap: ");
    angular.bootstrap(document, ['myApp']);
  });
});

正如我之前提到的,它适用于Chrome和IE,但不适用于Firefox。附件是截图,断点设置在main.js中(注释显示断点的位置)。屏幕截图显示了FF和Chrome中的局部变量... Chrome中的那些已正确加载,而FF中的那些变量未加载。

我认为这是一个小问题,但我找不到。任何帮助表示赞赏!!!

requirejs

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,它可以在Chrome中运行但不适用于Firefox。

我设法使用以下方法使其工作。这是在html中使用ng-app并基本上暂停了bootstrap过程,直到requirejs完成了它的魔力。

window.name = "NG_DEFER_BOOTSTRAP!";

/* require config here */

requirejs(['jquery','underscore','angularjs'], function ($, _ ) {
/* create angular app here */
 angular.element(document).ready(function () {
  angular.resumeBootstrap();
 });
}

我正在使用angularjs 1.2.0rc3并在FF 24,Chrome 30.0.1599.101 m,IE 10中测试