【问题标题】:locale filter in AngularJS - how to compensate for render delay?AngularJS 中的语言环境过滤器 - 如何补偿渲染延迟?
【发布时间】:2013-06-03 21:32:35
【问题描述】:

我使用过滤器编写了一个简单的 i18n 本地化函数,但应用过滤器时存在延迟。在应用过滤器和交换文本之前,用户将短暂看到“{{'formTitle' |i18n}}”。有没有办法解决这个问题?

这是一个代码示例,非常简单且相当常见:

<label for="person_title">{{'formTitle' | i18n}}</label>
angular.module('localization')
.value('localizedTexts', {
    'formTitle': 'Titre '
});

angular.module('localization', [])
.filter('i18n', ['localizedTexts', function (localizedTexts) {
return function (text) {
    if (localizedTexts.hasOwnProperty(text)) {
        return localizedTexts[text];
    }
    return text;
};

【问题讨论】:

    标签: javascript html css angularjs angularjs-filter


    【解决方案1】:

    考虑使用ng-cloak。引用自the AngularJS doc

    当浏览器加载这个css规则时,所有的html元素 用 ng-cloak 指令标记的(包括他们的孩子) 被隐藏。当 Angular 在 模板的编译它删除了 ngCloak 元素属性, 这使得编译的元素可见。

    为了获得最佳效果,必须在头部加载 angular.js 脚本 html文件的部分;或者,CSS规则(上面)必须是 包含在应用程序的外部样式表中。

    【讨论】:

      【解决方案2】:

      您也可能对角度翻译感兴趣 - http://pascalprecht.github.io/angular-translate/

      【讨论】:

      • 如果您正在执行异步消息属性加载,是否可以解决问题?您不会看到角度绑定,但您会看到备用值,直到消息属性到达。 (除非我做错了什么?)
      猜你喜欢
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多