Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何对事件$translateChangeSuccess执行错误处理?_Angularjs_Localization_Internationalization_Angular Translate - Fatal编程技术网

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');
}