Angularjs 如何对事件$translateChangeSuccess执行错误处理?
我在控制器内注册Angularjs 如何对事件$translateChangeSuccess执行错误处理?,angularjs,localization,internationalization,angular-translate,Angularjs,Localization,Internationalization,Angular Translate,我在控制器内注册$translateChangeSuccess事件(在实例化控制器时) 因此,98%的时间事件在控制器实例化后触发。但我坚信大约有2%的时间是在控制器实例化(即注册事件)之前发出事件的。因此,使用$translateChangeSuccess事件是不可靠的 我能做些什么来避免这种情况?如何使事件每次都触发而不失败?您无法避免上述情况。因为无论控制器是否启动,只要翻译区域性(区域设置)发生更改,$translateChangeSuccess都将被触发 $translateChang
$translateChangeSuccess
事件(在实例化控制器时)
因此,98%的时间事件在控制器实例化后触发。但我坚信大约有2%的时间是在控制器实例化(即注册事件)之前发出事件的。因此,使用$translateChangeSuccess事件是不可靠的
我能做些什么来避免这种情况?如何使事件每次都触发而不失败?您无法避免上述情况。因为无论控制器是否启动,只要翻译区域性(区域设置)发生更改,
$translateChangeSuccess
都将被触发
$translateChangeSuccess
将开始执行已为此事件注册的侦听器,并且不会等待控制器启动并注册侦听器
并且,如果在控制器启动之前已经触发了$translateChangeSuccess
,则表示区域性/区域设置没有变化。因此,您的翻译语句将生成应用了最新文化/语言环境的输出
所以在控制器的构造函数或init函数中,可以有如下内容
function init() {
translate(); // execute this because $translateChangeSuccess might have fired already.
$rootScope.$on('$translateChangeSuccess', function () {
console.log("It entered translateChangeSuccess");
translate();
});
}
function translate() {
A = $translate.instant('aaa');
B = $translate.instant('bbb');
}
你打算在
$translateChangeSuccess
中做什么?@jaganathanbanthessaran嗨,我已经更新了代码。我用它做翻译。
function init() {
translate(); // execute this because $translateChangeSuccess might have fired already.
$rootScope.$on('$translateChangeSuccess', function () {
console.log("It entered translateChangeSuccess");
translate();
});
}
function translate() {
A = $translate.instant('aaa');
B = $translate.instant('bbb');
}