Javascript 从控制器属性获取ember-i18n.js翻译密钥
我刚刚开始着手一个现有的Ember.js项目,该项目使用Ember-i18n.js进行本地化Javascript 从控制器属性获取ember-i18n.js翻译密钥,javascript,ember.js,translation,ember-i18n,Javascript,Ember.js,Translation,Ember I18n,我刚刚开始着手一个现有的Ember.js项目,该项目使用Ember-i18n.js进行本地化 Ember.Mixin.create({ setupController: function (controller, model) { controller.set("somePropertyName", "my.translation.key"); } }); 我定义了另一个帮助程序,它允许我从上下文属性中获取翻译键,而不是直接传入,例如,我可以使用{tr som
Ember.Mixin.create({
setupController: function (controller, model) {
controller.set("somePropertyName", "my.translation.key");
}
});
我定义了另一个帮助程序,它允许我从上下文属性中获取翻译键,而不是直接传入,例如,我可以使用{tr someContext.someProperty}
而不是{t“my.translation.key”}
Ember.Handlebars.registerBoundHelper('tr', function(property, options) {
return Ember.I18n.t(property);
});
我对Ember相当陌生,所以我的想法是,我可以简单地将模板中的{{somePropertyName}}
替换为{tr somePropertyName}
。那没用。当我在助手内设置断点时,我看到property
总是未定义的
我还尝试修改我的助手以使用演示的Ember.handlebar.get()
,但也解决了未定义的问题
假设我无法更改转换键的来源,是否有正确的方法将转换键从控制器获取到帮助器?您所做的应该很好-提供给帮助器的
属性
参数只是一个字符串,并将字符串从控制器传递到模板(然后传递到帮助器)这是直截了当的
所以,我猜测(这只是一个没有jsbin的猜测),或者您在某个地方有编码问题。或者你在使用mixin时发生了一些奇怪的事情
我将看到string属性从mixin到控制器、模板到助手的距离
如果更改{{tr property}}
字符串是否写入模板中?如果不是,则该属性未在控制器上设置
如果您有一个jsbin,那么可以更容易地看到正在发生的事情