我想在app.config中注入一个服务,以便在调用控制器之前检索数据.我试过这样的:
服务:
app.service('dbService', function() {
return {
getData: function($q, $http) {
var defer = $q.defer();
$http.get('db.php/score/getData').success(function(data) {
defer.resolve(data);
});
return defer.promise;
}
};
});
Run Code Online (Sandbox Code Playgroud)
配置:
app.config(function ($routeProvider, dbService) {
$routeProvider
.when('/',
{
templateUrl: "partials/editor.html",
controller: "AppCtrl",
resolve: {
data: dbService.getData(),
}
})
});
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
错误:未知提供程序:来自EditorApp的dbService
如何纠正设置并注入此服务?
我在做:
myApp.config([
'$httpProvider', '$rootScope', function($httpProvider, $rootScope) {
$httpProvider.interceptors.push(function($q) {
return {
responseError: function(rejection) {
var defer;
defer = $q.defer();
if (rejection.status === 401) {
$rootScope.$broadcast('api-error', rejection);
}
defer.reject(rejection);
return defer.promise;
},
response: function(response) {
var defer;
defer = $q.defer();
console.log(response);
if (response.status === 401) {
$rootScope.$broadcast('api-error', response);
defer.reject(response);
} else {
defer.resolve(response);
}
return defer.promise;
}
};
});
}
]);
Run Code Online (Sandbox Code Playgroud)
但我收到一个无法找到的错误$rootScope.我读了这个答案,它说要做一些奇怪的全局变量,这似乎是一个坏主意.那么如何在401状态下重定向到另一条路线呢?
angularjs ×2