Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从控制器属性获取ember-i18n.js翻译密钥_Javascript_Ember.js_Translation_Ember I18n - Fatal编程技术网

Javascript 从控制器属性获取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.js项目,该项目使用Ember-i18n.js进行本地化

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,那么可以更容易地看到正在发生的事情