感谢伟大的article from Dan Wahlin,我设法实现了Angular的控制器和服务的延迟加载。但是,似乎没有一种干净的方式来延迟加载独立模块。延迟加载AngularJS模块与RequireJS
为了更好地解释我的问题,假设我有一个应用程序将是结构如下图无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不允许在实例化后添加对依赖项的依赖。因此,我的解决方案是使用angular.injector
来检索要在我的View2Controller
中使用的Picture
对象的实例。请参阅js/scripts/controllers/ctrl2.js
文件。
这给了我两个问题:
- 注入的服务运行的角度之外,因此所有异步调用必须以$范围END $适用()
- 凌乱的代码,其中的一些对象可以被注入。使用标准的角度语法,而其他需要明确使用注射器。
有没有人想出了如何使用RequireJS来延迟加载独立模块,并且以某种方式将该模块挂接到角度中,因此可以使用正常的角度依赖注入语法?
注意:
的议题是独立的模块的延迟加载。这个特定示例的一个简单解决方案是在ng-app.config
期间使用缓存$提供程序创建“图片”对象,但这不是我正在寻找的。我正在寻找适用于第三方模块的解决方案,如angular-resource
。
我发现了这一点[解决方案] [1] $ routeProvider的jQuery和决心 [1]:http://stackoverflow.com/a/28199498/4504198 –
@marcoseu:OFFTOPIC:请尝试看看这个与angularAMD相关的问题。 :http://stackoverflow.com/questions/31288001/how-to-use-chart-js-with-angular-chart-using-requirejs – VBMali