延迟加载不同模块中的控制器

时间:2014-01-25 11:52:39

标签: javascript angularjs requirejs lazy-loading amd

我正在构建一个大型Angular应用程序。我试图延迟加载依赖项。 所以app.js中的应用程序模块看起来像

testApp = angular.module('SellerDashboard', [
        'ui.bootstrap',
        'ngRoute',
        'chieffancypants.loadingBar',
        'ngAnimate',
        'route-segment', 
        'view-segment',
        'Feature1.Index',
        'Feature1.My_Listings',
        'Feature1.My_Listings.Directives',
        'Feature2.Debug',
        'Feature2.Index',
        'Feature3.Index',
        'Feature3.Landing'
    ]);

这些模块中的每一个都有子模块,它们具有进一步的依赖关系。每个模块都是单独的文件。示例文件如下

var featureApp = angular.module('Feature1.My_Listings', ['Feature1.Services', 'Common.Services', 'CommonDebug.Services','angular-intro']);

listing_app.controller('my_listing', ['$scope', 'fkPaginator', '$routeParams', 'fkLogger', '$q','fkLoaderManager',function ($scope,fkPaginator, $routeParams, fkLogger, $q,fkLoaderManager) { //do somesthing})]);

所以我的app.js没有直接依赖'Feature1.Services'模块。它依赖于Feature1.My_Listings模块(定义控制器),它依赖于服务模块。

[Feature1.Services定义服务进一步依赖于其所需的其他提供者]

现在,我不希望我的Feature1.My_Listings被加载,直到我进入实际需要在'Feature1.Services'中定义的某个控制器的页面。如果我在“My_Listings”页面,我不想加载fFeature2和功能3模块。

Implement lazy loading。上面的链接显示了如何在更改路由时使用resolve.But然后它还强制要求将所有文件放在一个模块下,即app模块,所有控制器都被定义为app.controller(“bla bla”),使用app as全局变量。但在我的情况下,我想延迟加载模块并根据路由动态包含它们。

我该如何解决?如果有人可以帮助解决如何使用requirejs实现这一点,那将是很好的。

所以对于一个非常大的应用程序,上面的方法是正确的,用于定义控制器,服务等,或者将它们分解为更小的模块,就像我做的那样是正确的方法吗?

0 个答案:

没有答案