首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ocLazyLoad进行依赖注入

如何使用ocLazyLoad进行依赖注入
EN

Stack Overflow用户
提问于 2016-10-05 13:37:55
回答 1查看 1.2K关注 0票数 2

我使用的是ocLazyLoad,我有一些外部的角度库(如Chart.jspascalprecht.translate),我需要在某些路由中延迟加载它们,正如您所知道的,因为常见的角度模块依赖注入应该如下所示:

代码语言:javascript
复制
var angularApp = angular.module('myApp',
     ['oc.lazyLoad', 'pascalprecht.translate', 'chart.js']);

现在,我只需要在我的controllers中延迟加载pascalprecht.translate,在另一个controller,中也需要延迟加载chart.js,但是我仍然需要将它们添加到myApp模块中,但我不知道如何注入,也不使用$stateProvider

我试过我需要的控制器chart.js:

代码语言:javascript
复制
//Load here.
//$ocLazyLoad.load('./panel/dist/test.js');
angular.module('myApp', ['chart.js', [
 './panel/dist/static/chart.min.js',
 './panel/dist/static/angular-chart.min.js'
]]);

$ocLazyLoad.load('./panel/dist/static/chart.min.js');
$ocLazyLoad.load('./panel/dist/static/angular-chart.min.js');

,但我得到了一个错误:

角-chart.min.js:10未捕获错误:需要包含Chart.js库,请参阅http://jtblin.github.io/angular-chart.js/

EN

回答 1

Stack Overflow用户

发布于 2016-10-08 14:17:17

首先,不需要在依赖项注入中注入chart.js,这应该是模块

代码语言:javascript
复制
var angularApp = angular.module('myApp', [ 'oc.lazyLoad' ]);

现在,您希望能够访问来自不同控制器(例如路由)的某些库,正如您所说的不使用$stateProvider --这意味着您不使用ui路由器 (这是一个第三方库,用于处理路由和URL)。

这是我的建议(只是一个简单的解决方案):

代码语言:javascript
复制
angularApp.config(function ($routeProvider, $locationProvider) {
    $routeProvider.when('/home', {
        templateUrl: 'views/home.html',
        controller: 'HomeController',
        resolve: {
            store: function ($ocLazyLoad) {
                return $ocLazyLoad.load(
                    {
                        serie: true,
                        name: "chart.js",
                        files: [
                            "./static/chart.min.js",
                            "./static/chart-angular.min.js",
                        ]
                    }
                );
            }
        }
    });

        $routeProvider.when('/needs-translate', { 
        templateUrl: 'views/needs-translate.html',
        controller: 'translateController',
        resolve: {
            store: function ($ocLazyLoad) {
                return $ocLazyLoad.load(
                    {
                        serie: true,
                        name: "pascalprecht.translate",
                        files: [
                            "./static/translate.js"
                        ]
                    }
                );
            }
        }
    });

    $routeProvider.otherwise({
        redirectTo: '/home'
    });

    // use the HTML5 History API
    $locationProvider.hashPrefix = '!';
    $locationProvider.html5Mode(true);
});

顺便说一句,如果您正在使用ui.router,这个Github问题将对您很有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39875533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档