我是ember.js的新手。我有一个自定义视图助手:
Ember.Handlebars.helper('translate', function(value, options) {
return JoblyApp.i18n.__(value) || options.hash.def;
});
我需要在TextField中应用这个帮助器:
{{view Ember.TextField valueBinding="somevalue" placeholder="{{translate "city_or_region"}}" }}
我怎样才能实现这一目标?
答案 0 :(得分:1)
您不能在其他车把助手内使用车把助手。我会通过扩展Ember.TextField
来自动翻译占位符来解决这个问题。
我创建了这个JSBin demo。 注意:它不会翻译,它使用虚函数来大写占位符文本。替换为您的功能。
JoblyApp.TranslateableTextFieldView = Ember.TextField.extend({
didInsertElement: function(){
for(var key in this){
if(key.substr(0,2)==="t_"){
var value = this.get(key);
this.set(key.substr(2, key.length - 2), JoblyApp.i18n.__(value));
}
}
}
});
{{view JoblyApp.TranslateableTextFieldView valueBinding="somevalue" t_placeholder="city_or_region"}}
注意我使用t_
作为搜索的前缀,而不是__
,因为Ember在其对象的私有成员上使用此键。因此,我会避免使用此前缀来防止冲突。
答案 1 :(得分:0)
这就是诀窍:
App.TranslateableTextFieldView= Ember.TextField.extend({
didInsertElement: function() {
for (var key in this) {
if (key.substr(0,2) == '__') {
var keyName = key.substr(2, key.length);
var value = this.get(key);
this.set(keyName,App.i18n.__(value));
}
}
}
});