javascript - 将任意参数传递给 Handlebars 助手?

标签 javascript ember.js internationalization handlebars.js

很抱歉,如果这个问题之前已经被问过一百万次了,但我似乎无法在任何地方找到满意的答案。

我正在尝试构建一个 handlebars 助手来绑定(bind)到我的 i18n 库中,我需要它接受任意数量的命名参数,如下所示:

{{i18n yml.text.definition count=2 name="Alex" ... param="hello}}

这将转换为这样的调用:

i18n.t("yml.text.definition", { count: 2, name: "Alex", ... param: "hello"})

这可能吗,还是我完全脱离了我的树?

最佳答案

提供以下助手:

{{myHelper "foo" this ... key=value ...}}

您可以使用以下声明获取数据:

Ember.Handlebars.helper('name', function(param1, param2, options) {
  param1 // The string "foo"
  param2 // some object in that context
  options.hash // { key: value }
});

函数的每个参数都是传入{{myHelper param1 param2}}的参数。但剩下的将是一个带有一些特殊/私有(private)信息的对象。使用该对象,您可以使用散列对象检索键=值信息。

如果提供给助手的参数被引用,如“param1”,则返回字符串,否则它被解析为该上下文中的某个对象。

在您的情况下,您需要:

Ember.Handlebars.helper('i18n', function(property, options) {        
    var hash = options.hash;    
    return 'i18n.t(' + property + ', { count: ' + hash.count + ', name: ' + hash.name + ', param: ' + hash.param + '})';
});

这是一个可以正常工作的 jsfiddle http://jsfiddle.net/marciojunior/64Uvs/

希望对你有帮助

关于javascript - 将任意参数传递给 Handlebars 助手?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18903003/

相关文章:

javascript - 移动设备方向变化的 Ember Action

javascript - 为什么我的输出没有显示在我的 div 中?

javascript - Google map 禁止用户在所有事件上平移

javascript - 根据键的值在包含多个对象的数组中搜索

javascript - Ember 测试失败,返回 `testem.js not loaded?`

javascript - 使用 Ember js 调用 REST API

java - 如何使用纯阿拉伯文本实现 Struts 2 i18n?

sql - 国际化 - 支持所有语言的字符集?

ruby-on-rails-3 - 如何使Rails 3 I18n翻译自动安全?

javascript - 在 jquery/javascript 中组合两个脚本