使用RequireJS延迟加载AngularJS DI组件

时间:2014-09-02 08:14:20

标签: angularjs dependency-injection requirejs lazy-loading

我对延迟加载服务和工厂有疑问。我已经研究了一个多星期了,并没有找到满意的答案。我发现:Lazy loading AngularJS modules with RequireJS似乎接近了,但它不是我想要的,我不想懒惰加载我的模块。

我不知道如何使用AngularJS和RequireJS来装备一个用来澄清我的需求;所以我会尽可能清楚地解释我的需求:

此时,我的每个AngularJS控制器,服务和工厂都是这样的:

var dependencies = ['something', 'something/else'];
define(dependencies, function() {

    var controller = function(something, else) {};
    angular.module('app').controller('myController', ['something', 'else', controller]);

});

这很有效。我使用RequireJS加载我的依赖项,一切都很好。困扰我的是需要声明我的依赖项并将我的AngularJS代码包装在RequireJS定义调用中,我希望AngularJS(请原谅我)做正确的事情。

理论上,当且仅当所有承诺的参数都被解析时,我的控制器的构造函数才会被执行。我想创建一个服务解析器,它返回somethingsomething else的服务承诺,以便我可以跳过RequireJS define调用中的依赖关系并处理我的服务解析器内部或我的DI容器内部更好。

我的问题是,有没有人有这种模式的解决方案?有谁知道改变服务和工厂加载承诺的方式?或者我应该按照我一直在做的方式实现它并等待AngularJS 2.0和子注射器?

我希望这个问题有道理。感谢您的时间和帮助,

1 个答案:

答案 0 :(得分:2)

目前无法更改实施。 AngularJS没有固定的方法来更改ServiceProvider以返回自定义promisses而不是具体对象。

Vojta Jinathis Youtube video中解释了AngularJS的未来。