在bootstrap之后加载对angularjs app的依赖

时间:2017-07-12 13:56:34

标签: angularjs requirejs

我有角度js 1.3.3 app。

我正在从其他网站加载一个模块:

  

RequireJS

我想引导我的应用程序,然后立即加载外部模块。

我的代码:

var app = angular.module("myApp");
app.run(function(){
   // Load external module 
   require("some js url", function(){
      app.requires.push("externalApp");
    });
});
angular.bootstrap($("html"), "myApp");

此代码无效(在“myApp”中无法从“externalApp”访问服务),有什么问题?

非常感谢帮助,非常感谢

REFA。

1 个答案:

答案 0 :(得分:0)

RequireJS的require调用是异步的。到angular.bootstrap执行时,无法保证app.requires.push(...)将会运行。事实上,它极有可能无法运行,因为require调用可能需要从某个地方加载模块,这需要时间。

您应该重新构建代码,以便require在外面,这样您就可以确保在引导应用程序之前app.requires.push(...)运行。

require("some js url", function () {
  var app = angular.module("myApp");
  app.run(function () {
    // Load external module 
    app.requires.push("externalApp");
  });
  angular.bootstrap($("html"), "myApp");
});