我使用ocLazyLoad并且我有一些外部角度库(如Chart.js
和pascalprecht.translate
)并且我需要在某些路径中延迟加载它们,如您所知,对于常见的角度模块依赖注入应该像:
var angularApp = angular.module('myApp',
['oc.lazyLoad', 'pascalprecht.translate', 'chart.js']);
现在,我只需要在我的 pascalprecht.translate
和延迟加载controllers
之间延迟加载chart.js
,在另一个 {{1 }} ,但我仍然需要将它们添加到 controller
模块,但我不知道如何注射,而且我不知道如何注射不要使用myApp
我试过我的控制器,我需要chart.js:
$stateProvider
但是我收到了这个错误:
angular-chart.min.js:10未捕获错误:Chart.js库需要 包括在内,请参阅http://jtblin.github.io/angular-chart.js/
答案 0 :(得分:0)
首先,您不需要在依赖注入中注入chart.js,这应该是您的模块:
var angularApp = angular.module('myApp', [ 'oc.lazyLoad' ]);
现在,您希望能够访问来自不同控制器的某些库(比如路线),正如您所说的那样,您不使用$stateProvider
,这意味着您不使用 ui-router
(这是一个使用路由和网址的第三方库)。
这是我的建议(只是一个简单的解决方案):
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 issue会对您有用