我有一个带有localytics(angular)Chosen插件的多个实例的ng-view。我还有一个包含插件实例的ng-include。两者都呈现在同一页面上。
我正在使用数据占位符属性来渲染通过angular-translate插件过滤的值。
最初,当调用更新语言的方法时,我遇到了所有Chosen实例渲染翻译文本的问题。 我通过在方法结束时调用$ route.reload()来解决这个问题(不理想,但可以接受)。
我试过了:
但是,ng-include中的占位符在不使用硬刷新的情况下拒绝更新。在方法结束时调用$ window.location.reload()允许所有实例显示正确的翻译,但如果没有这个,我就无法找到解决问题的方法。
我认为这是一个范围问题。也许Chosen插件(这是一个指令)创建了自己的范围,然后ng-include有自己的范围,ng-view也是如此。
在Chosen插件之外正在翻译的所有属性都按预期工作。
目前,角度转换对象如下所示:
var translationEN = {
SEARCH: {
'SEARCH-BTN': 'Search'
}
}
所以我按照以下内容对它们进行内联绑定:
<div ng-bind="'SEARCH.SEARCH-BTN' | translate">
我也尝试过$ translate上的一些方法,例如$ translate.refresh()无济于事。
如果有任何想法,我们非常感谢任何帮助和/或评论。
提前致谢。
答案 0 :(得分:2)
您可以使用chosen
属性传递一些配置,而不是使用data-placeholder属性,如下所示:
<select chosen="{'placeholder_text_single': 'Select the options'}"></select>
或者您可以编写所选指令也将作为配置接受的自定义属性。但是,在使用属性时,该指令将评估表达式而不是使用文字值,该值不会像翻译目的那样按预期工作,因为&#39; {{...}}&#39;不是一个有效的表达。属性将是这样的:
<select chosen placeholder-text-single="'Select the options'"></select>
答案 1 :(得分:1)
当承诺加载选项时,我遇到了类似的问题。
只有一个空数组,翻译工作正常,但将答案放回代码会导致此行为。
chosen
指令中的快速调试显示,所选角度插件从中获取所选小部件模板的element
未链接(或编译...我是非常新的有角度的,它仍包含{{placeholder.string | translate}}
属性的data-placeholder
值,但attr.placeholder
包含已转换的值。
因此,此行将错误的值设置为默认文本:https://github.com/localytics/angular-chosen/blob/master/chosen.js#L57
我使用chosen
函数扩展了preLink
指令,该函数使用正确的值修改了element
的{{1}}属性:
data-placeholder