我使用的是ocLazyLoad,我有一些外部的角度库(如Chart.js和pascalprecht.translate),我需要在某些路由中延迟加载它们,正如您所知道的,因为常见的角度模块依赖注入应该如下所示:
var angularApp = angular.module('myApp',
['oc.lazyLoad', 'pascalprecht.translate', 'chart.js']);现在,我只需要在我的controllers中延迟加载pascalprecht.translate,在另一个controller,中也需要延迟加载chart.js,但是我仍然需要将它们添加到myApp模块中,但我不知道如何注入,也不使用$stateProvider
我试过我需要的控制器chart.js:
//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/
发布于 2016-10-08 14:17:17
首先,不需要在依赖项注入中注入chart.js,这应该是模块。
var angularApp = angular.module('myApp', [ 'oc.lazyLoad' ]);现在,您希望能够访问来自不同控制器(例如路由)的某些库,正如您所说的不使用$stateProvider --这意味着您不使用ui路由器 (这是一个第三方库,用于处理路由和URL)。
这是我的建议(只是一个简单的解决方案):
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问题将对您很有用。
https://stackoverflow.com/questions/39875533
复制相似问题