Angularjs 如果未设置translate cookie,如何在Angular中重定向?

Angularjs 如果未设置translate cookie,如何在Angular中重定向?,angularjs,cookies,angular-translate,Angularjs,Cookies,Angular Translate,我想将用户重定向到一个语言页面,如果他还没有选择语言,就不允许他进入索引页面。我正在使用模块。此模块内置cookie用法,具有以下功能: $translateProvider.useCookieStorage(); 这很有效。现在我想知道这个cookie是否已设置,如果未设置,请将用户重定向到语言页面。这是我的想法如何处理这件事 .factory('cookiecheck', function(){ if($translateProvider.CookieStorage.get) retu

我想将用户重定向到一个语言页面,如果他还没有选择语言,就不允许他进入索引页面。我正在使用模块。此模块内置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');
    }
});
有关cookie商店,请参阅

此外,由于您不知道cookie是否以及何时过期或删除,我认为最好观察路线的变化,然后进行检查

要执行此操作,请从run块中的ui router将钩子连接到
$stateChangeStart
事件中

    $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){
        // check then redirect
    });


查看此观看路线更改

建议很好,谢谢。但是我仍然需要知道检查cookie是否存在的语法,然后重定向。嘿,Harbinger,我更新了我的答案,我想你想访问底层存储并检查它是否已设置。我只是不确定如果没有语言集,translate.storage()会返回什么。是的,translate.storage()就是我想要的语法,谢谢Dane。这将返回一个包含get、set和put函数的数组。我仍在寻找如何编写重定向,以拒绝用户键入特定的url路径,并仍然被重定向到语言页面。我认为get采用区域设置,即,
$translate.storage().get('en_us')