var authRedirect = function(s) {
return ['$state', '$q', 'AuthService', function($state, $q, AuthService) {
var d = $q.defer();
var is_auth = AuthService.checkAuth();
if(!is_auth) {
d.reject();
$state.go(s);
} else
d.resolve();
return d.promise;
}];
}
// ...
.state('secret', {
url: '/secret',
controller: 'TestCtrl',
templatesUrl: '/test.html',
resolve: { authRedirect: authRedirect('other') }
})
.state('other', { .... } )
我将另一个状态传递到我的resolve
函数中,如果某些条件未满足,则该函数应重定向到该状态。我在其他几个路由中使用此解析函数,因此它是保持ui-router代码清洁的一种方便方法。
虽然非缩小版本工作正常,但它的缩小版本不起作用(它什么都不做)。但似乎我已经正确地注释了它,因为没有抛出任何错误。可能有什么不对?
答案 0 :(得分:1)
请使用
更新代码.state('secret', {
url: '/secret',
controller: 'TestCtrl',
templatesUrl: '/test.html',
resolve: { authRedirect: ['authRedirect', function(authRedirect){ return authRedirect('other')}] }
})
答案 1 :(得分:0)
您也可以尝试更新这样的代码
.state('secret', {
url: '/secret',
controller: 'TestCtrl',
templatesUrl: '/test.html',
resolve: { authRedirect: function() { return authRedirect('other')} }
})