Angularjs Angular ui router,在其中一个触发错误-拒绝后,如何取消以下解析?
我在下面的代码中使用ui路由器,我有两个解决方案Angularjs Angular ui router,在其中一个触发错误-拒绝后,如何取消以下解析?,angularjs,Angularjs,我在下面的代码中使用ui路由器,我有两个解决方案 我检查是否有身份验证令牌 我从服务器上得到一些数据 如果没有令牌,我将拒绝解析并重定向到用户登录页面 问题是,“电影人”的解析仍在进行中-如何取消解析? 有什么想法吗 angular.module('app.code').config(['$stateProvider', function($stateProvider) { $stateProvider.state('code', { url: '/cod
angular.module('app.code').config(['$stateProvider', function($stateProvider) {
$stateProvider.state('code', {
url: '/code',
templateUrl: 'app/sections/code/code.tpl.html',
controller: 'CodeCtrl',
resolve: {
/**
* Auth middleware.
*/
UserData: ['$q', 'Session', function ($q, Session) {
var userData = Session.getUserData();
if (userData.token) {
return userData;
}
return $q.reject('login');
}],
// IF I TRIGGER THE REJECT ABOVE, HOW DO I CANCEL THIS FOLLOWING RESOLVE?
movieList: ['$q', 'MoviesService', function ($q, MoviesService) {
var deferred = $q.defer();
MoviesService.query().then(
function (success) {
deferred.resolve(success.data);
},
function (error) {
$q.reject('home');
}
);
return deferred.promise;
}]
}
});
}]);
将UserData作为依赖项添加到movieList resolve函数。现在,只有在解析UserData时才会调用movieList
movieList: ['$q', 'MoviesService', 'UserData', function ($q, MoviesService, UserData) {
var deferred = $q.defer();
MoviesService.query().then(
function (success) {
deferred.resolve(success.data);
},
function (error) {
$q.reject('home');
}
);
return deferred.promise;
}