我有一个应用程序,其中包含一个服务,它封装了我的API调用:
var ConcernService = {
...
get: function (items_url, objId) {
var defer = $q.defer();
$http({method: 'GET',
url: api_url + items_url + objId}).
success(function (data, status, headers, config) {
defer.resolve(data);
}).error(function (data, status, headers, config) {
console.log('ConcernService.get status',status);
defer.reject(status);
});
return defer.promise;
},
我正在使用UI-Router在不同状态之间进行转换:
concernsApp
.config( function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise("/404/");
$stateProvider.state('project', {
url: '/project/:projectId/',
resolve: {
project: function ($stateParams, ConcernService) {
return ConcernService.get('projects/', $stateParams.projectId);
},
},
views: {
...
}
});
我正在从使用普通的AngularJS路由器切换,但是在实现404时遇到了困难。 我可以看到ConcernService
将状态作为rejected抛出console.log
,但我应该如何在状态路由器中捕获它呢?
$rootScope
相同的函数中。例如:yourModuleName.run(function($rootScope, $state) { /* ... */ });
- Nate Abele