我想将用户重定向到语言页面,如果他还没有选择语言,则不允许他访问索引页面。我正在使用Angular Translate模块。此模块内置cookie,使用以下功能:
$translateProvider.useCookieStorage();
这很有效。现在我想知道是否设置了此cookie,如果没有,则将用户重定向到语言页面。我的想法是如何解决这个问题。
.factory('cookiecheck', function(){
if($translateProvider.CookieStorage.get) return true;
return false;
}
.run(function($rootScope, $state){
if(cookiecheck
{$location.path('/language');}
else
{$location.path('/home');}
这不起作用。我怎么能最好地接近这个?确定CookieStorage是否存在并重定向的正确语法是什么?
答案 0 :(得分:1)
您发布的代码中存在一些语法错误,因为您可以将$translate
服务注入到运行块中,因此不需要工厂。
.run(function($rootScope, $state, $location, $translate) {
var store = $translate.storage();
// if store is empty?
if(angular.equals(store, {}))){
$location.path('/language');
}
else {
$location.path('/home');
}
});
有关cookie商店的信息,请参阅ng-translate docs
此外,由于您不知道cookie是否以及何时过期或删除,我认为最好先查看更改路线并进行检查。
要从运行块中的ui路由器挂钩到$stateChangeStart
事件
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
// check then redirect
});
请参阅此post了解路线更改