Angular Translate有时不用一次性绑定进行翻译

时间:2017-03-31 08:41:17

标签: javascript angularjs angular-translate one-time-binding

我正在使用Angular 1.x及它的Angular Translate模块。最近,我将所有翻译绑定从双向转换为一次。一切都运行良好,直到有一天,然而,我注意到有时如果我开始刷新页面,翻译实际上并没有被翻译。

示例:

{{ ::'MyTranslationKey' | translate }}

在90%的时间内,结果是正确的。然而,在其他10%中,渲染结果为:

MyTranslationKey

原因是什么以及如何解决?

修改

这不会发生在ng-if,ng-repeat或指令内的元素 - 例如当他们在儿童范围内时。

2 个答案:

答案 0 :(得分:3)

默认情况下,angular-translate为键提供空字符串而不进行翻译。 在10%的时间内翻译不起作用的原因是您在页面呈现后立即收到了带翻译的文件。当您收到翻译文件时,由于一次数据绑定,translate指令的新值不适用; 在这种情况下,您可以将所有内容放在ng-if中,如果有数据接收条件ng-if='loaded'

答案 1 :(得分:3)

尝试:

<element translate>
    {{::'MyTranslationKey'}}
</element>

此外,使用translate属性而不是过滤器可以提供更好的性能(根据Angular Translate的创建者Pascal Precht)。