gpt4 book ai didi

angularjs - 使用 RequireJS 延迟加载 AngularJS 模块

转载 作者:行者123 更新时间:2023-12-02 19:29:57 25 4
gpt4 key购买 nike

感谢伟大的article from Dan Wahlin ,我成功地实现了 Angular 的 Controller 和服务的延迟加载。然而,似乎没有一种干净的方法来延迟加载独立模块。

为了更好地解释我的问题,假设我有一个应用程序在没有 RequireJS 的情况下结构如下:

// Create independent module 'dataServices' module with 'Pictures' object
angular.module("dataServices", []).factory("Pictures", function (...) {...});

// Create 'webapp' ng-app, with dependency to 'dataServices', defining controllers
angular.module("webapp", ['dataServices'])
.controller("View1Controller", function (...) {...})
.controller("View2Controller", function (...) {...});

这是 Plunker 中使用 RequireJS 的示例应用程序:
http://plnkr.co/aiarzVpMJchYPjFRrkwn

问题的核心是Angular不允许添加依赖ng-app实例化后。结果,我的解决方案是使用 angular.injector检索 Picture 的实例在我的 View2Controller 中使用的对象。请参阅js/scripts/controllers/ctrl2.js文件。

这给我带来了两个问题:

  1. 注入(inject)的服务在 Angular 之外运行,因此所有异步调用必须以 $scope.$apply() 结束
  2. 代码困惑,某些对象可以使用标准 Angular 语法注入(inject),而其他对象则需要显式使用注入(inject)器。

你们中有人知道如何使用 RequireJS 延迟加载独立模块并以某种方式将这个模块挂接到 Angular 中,以便可以使用正常的 Angular 依赖注入(inject)语法吗?

注意:
问题在于独立模块的延迟加载。此特定示例的一个简单解决方案是在 ng-app.config 期间使用缓存的 $providers 创建“Pictures”对象。但这不是我想要的。我正在寻找适用于第三方模块的解决方案,例如 angular-resource .

最佳答案

我最终确定了自己的实现,名为 angularAMD,下面是使用它的示例站点:

http://marcoslin.github.io/angularAMD/

它处理配置函数和无序模块定义。

希望这可以帮助其他人寻找一些东西来帮助他们进行 RequireJS 和 AngularJS 集成。

关于angularjs - 使用 RequireJS 延迟加载 AngularJS 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19134023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com