【问题标题】:Use RequireJS to lazy load AngularJS DI components使用 RequireJS 延迟加载 AngularJS DI 组件
【发布时间】:2014-10-28 16:10:37
【问题描述】:

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

我不知道如何使用 AngularJS 和 RequireJS 来安装一个 plunker 来阐明我的需求;所以我会尽量清楚地解释我的需求:

此时,我的每个 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(在此打扰我)做正确的事情。

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

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

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

【问题讨论】:

    标签: angularjs dependency-injection requirejs lazy-loading


    【解决方案1】:

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

    正如Vojta Jinathis Youtube video 中解释的那样,这将在AngularJS 的未来成为可能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      相关资源
      最近更新 更多