fernando fernando - 1 month ago 56
AngularJS Question

Angular UI router $transitions.onBefore

I am using angular ui router version 1.0.0-alpha.4 and since by default root scope events are inactive I thought of using new way of implementing auth mechanism as follows.

.run(['$transitions', '$timeout', '$q', '$state', 'AuthService', ($transitions, $timeout, $q, $state, AuthService) => {
$transitions.onBefore({ to: 'app.*', from: '*' }, () => {
const deferred = $q.defer();
AuthService.isLoggedIn().then(() => {
deferred.resolve()
}, () => {
// redirect to error page
// how can i redirect user to error page. $state.go('error') not working.
deferred.reject()
});
return deferred.promise;
}, {priority: 10});
}])


However issue is that I am not sure how to redirect user to error page. I try to use $state.go('error') and seems does not working. Any suggestions?

Answer

Cool I found the solution. Posting this to anyone who may come up with the same issue. All you need is resolve the promise as follows.

deferred.resolve($state.target('error', undefined, { location: true }))
Comments