无法在app.run中使用$ translate.use:undefined

时间:2017-10-18 06:15:05

标签: angularjs angular-translate

因为我将angular-translate从2.9.0升级到2.15.2我不能再在我的rootScope(app.run)中使用$ translate.use()函数

加载页面时,$ translate.use()的值未定义。这是我用来加载语言和更改语言的代码。

$rootScope.changeLanguage = function (langKey) {
    if(langKey.length == 2) {
        $translate.use(langKey.toLowerCase()+"_"+langKey.toUpperCase());
        $rootScope.language = langKey;
    } else if(langKey.length == 5) {
        $translate.use(langKey);
        $rootScope.language = langKey.substring(0,2);
    }
};

$rootScope.changeLanguage($translate.use());

这段代码给了我这个错误:

  

未捕获的TypeError:无法读取属性'长度'未定义的       在m.e.changeLanguage(app.js:184)

(缩小代码,因此$ rootScope重命名为m.e。)

此日志行给出了以下内容:

console.log("trans", $translate.versionInfo(), $translate.use());
  

trans 2.15.2 undefined

我怎样才能再次使用它?

1 个答案:

答案 0 :(得分:1)

您收到此错误是因为当脚本第一次运行时,langKey未定义,因此在使用langKey之前在changeLanguage函数中添加check,如下所示。它会起作用:

    $rootScope.changeLanguage = function(langKey) {
      if (langKey) {
        if (langKey.length == 2) {
          $translate.use(langKey.toLowerCase() + "_" + langKey.toUpperCase());
          $rootScope.language = langKey;
        } else if (langKey.length == 5) {
          $translate.use(langKey);
          $rootScope.language = langKey.substring(0, 2);
        }
      }
    };

    $rootScope.changeLanguage($translate.use());