如果未设置翻译 cookie,如何在 Angular 中重定向?
How to redirect in Angular if translate cookie is not set?
我想将用户重定向到一个语言页面,如果他还没有选择语言,则不允许他进入索引页面。我正在使用 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 是否存在并重定向的正确语法是什么?
您发布的代码中有一些语法错误,工厂不是必需的,因为您可以将 $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');
}
});
请参阅 ng-translate docs 了解 cookie 存储
此外,由于您不知道 cookie 是否以及何时会过期或删除,我认为最好观察路线的变化,然后进行检查。
在你的 运行 块
中从 ui 路由器挂钩到 $stateChangeStart
事件
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
// check then redirect
});
查看此post 以查看路线变化
我想将用户重定向到一个语言页面,如果他还没有选择语言,则不允许他进入索引页面。我正在使用 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 是否存在并重定向的正确语法是什么?
您发布的代码中有一些语法错误,工厂不是必需的,因为您可以将 $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');
}
});
请参阅 ng-translate docs 了解 cookie 存储
此外,由于您不知道 cookie 是否以及何时会过期或删除,我认为最好观察路线的变化,然后进行检查。
在你的 运行 块
中从 ui 路由器挂钩到$stateChangeStart
事件
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
// check then redirect
});
查看此post 以查看路线变化