不能在 app.run 中使用 $translate.use:未定义
Can't use $translate.use in app.run: undefined
自从我升级 angular-translate 从 2.9.0 到 2.15.2 我不能再在我的 rootScope 中使用 $translate.use() 函数 (app.run)
加载页面时,$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());
这段代码给我这个错误:
Uncaught TypeError: Cannot read property 'length' of undefined
at m.e.changeLanguage (app.js:184)
(缩小代码,因此 $rootScope 重命名为 m.e。)
此日志行为我提供了以下信息:
console.log("trans", $translate.versionInfo(), $translate.use());
trans 2.15.2 undefined
我怎样才能让它重新工作?
您收到此错误是因为当脚本第一次 运行 时 langKey 未定义,因此在使用 langKey 之前在 changeLanguage 函数中添加检查,如下所示。它将起作用:
$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());
自从我升级 angular-translate 从 2.9.0 到 2.15.2 我不能再在我的 rootScope 中使用 $translate.use() 函数 (app.run)
加载页面时,$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());
这段代码给我这个错误:
Uncaught TypeError: Cannot read property 'length' of undefined at m.e.changeLanguage (app.js:184)
(缩小代码,因此 $rootScope 重命名为 m.e。)
此日志行为我提供了以下信息:
console.log("trans", $translate.versionInfo(), $translate.use());
trans 2.15.2 undefined
我怎样才能让它重新工作?
您收到此错误是因为当脚本第一次 运行 时 langKey 未定义,因此在使用 langKey 之前在 changeLanguage 函数中添加检查,如下所示。它将起作用:
$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());