我正在尝试在ny项目中使用角度常量,我需要通过对config.json文件发出http请求来获取。但是当我尝试在任何控制器中注入该常量时,angular会给我以下错误: 未捕获错误:[$ injector:modulerr]由于以下原因无法实例化模块仪表板: 错误:[$ injector:unpr]未知提供者:$ http 我的角度常数和路线的代码看起来很像。
'use strict';
var dashboard = angular.module('dashboard', [
'ngResource',
'ngSanitize',
'ngRoute',
]);
dashboard.config(function($routeProvider) {
$routeProvider
.when('/:appName', {
templateUrl: 'views/dashboard_landing.html',
controller: 'displayController'
})
.when('/:appName/individual/session/graph', {
templateUrl: 'views/individual_session_graph.html',
controller: 'indSessionGraphCtrl'
})
.when('/:appName/individual/session/piechart', {
templateUrl: 'views/individual_session_pie.html',
controller: 'indSessionPieCtrl'
})
.when('/:appName/individual/activity', {
redirectTo: ':appName/individual/session/graph'
})
.when('/:appName/individual/engagement', {
templateUrl: 'views/individual_engagement.html',
controller: 'indEngagementCtrl'
})
.when('/:appName/overall/session/graph', {
templateUrl: 'views/overall_session_graph.html',
controller: 'oveSessionGraphCtrl'
})
.otherwise({
redirectTo: '/lecafe'
});
});
dashboard.config(function ($provide, $http) {
$provide.constant('baseURL',function() {
$http({
method:'GET',
url:'/baseurl.json'
})
.success(function(data){
var baseURL = data[0].baseURL;
return baseURL;
})
.error(function(){
});
});
});
任何人都可以帮我解决这个错误。 提前谢谢你......
答案 0 :(得分:1)
这与此问题非常相似:use $http inside custom provider in app config, angular.js
简而言之,您不能在.config部分使用$ http,因为$ http本身尚未配置。但是,您可以使用一些方法来实现您想要的目标。
我的个人理想:如果您可以控制baseurl.json的内容,可以将其更改为运行的.js文件
angular.module('dashboard').constant('baseURL', 'http://...');
并将其包含在结束标记
之前<script type="text/javascript" src="/baseurl.js"></script>
我经常使用此模式将各种设置包含到应用中。
如果这不是一个选项,您可以按照此问题中的方法进行操作:AngularJS : Initialize service with asynchronous data