1

我们使用角度翻译来处理网站的本地化,使用我们自己的自定义加载器从服务器获取翻译。在服务器端,我们有处理丢失的翻译键的逻辑,这样我们既可以返回一些东西(来自备用语言的翻译或键本身),也可以向系统报告请求了键(因此它会显示在翻译 UI 中网站上的其他地方)。现在,我正在努力在客户端构建类似的东西。

$translateProvider有一个我们已经成功配置的方法,useMissingTranslationHandler(factory)使用以下命令退出控制台缺少密钥:

app.config(function ($translateProvider) {
    $translateProvider.useMissingTranslationHandler('translationMissingHandler');
});

app.factory('translationMissingHandler', translationMissingHandler);

translationMissingHandler.$inject = ['$window', '$log', '$http'];
function translationMissingHandler($window, $log, $http) {
    return function (translationId) {
        var culture = $window.preferredCulture, // workaround for another problem
            errorInfo = {
                key: translationId,
                culture: culture
            };
        $log.warning('Translation missing:', errorInfo);
        // $http.post('/api/v2/localization/missing', errorInfo);
    }
}

但是,然后我取消对POST服务器的注释,通知丢失的密钥,页面挂在angular.js-的第 14394 行throw e,在哪里e.message

[$rootScope:infdig] 达到 10 次 $digest() 迭代。中止!在最后 5 次迭代中触发的观察者:[]

我已经尝试了各种方法来解决这个问题 - 例如将调用包装起来$http.post()$timeout$rootScope.$apply无济于事;我仍然收到相同的错误消息。

有没有办法安排$http.post()从这里调用而不导致此错误?如果是这样,怎么做?

4

0 回答 0