【问题标题】:How to pass multiple arguments to Spacebars helper from Meteor template?如何从 Meteor 模板将多个参数传递给空格键助手?
【发布时间】:2015-08-25 23:03:35
【问题描述】:

我找不到可靠的例子。

Template.registerHelper("itemLookup", function(sku, property){
  return Items.findOne({sku: sku})[property];
});

如何在模板上调用它?

我想做这样的事情:

{{ itemLookup sku="i3_4030U" property="title" }}

应该输出

"Intel Core i3 4030U"

【问题讨论】:

    标签: meteor spacebars


    【解决方案1】:

    不要命名模板助手参数,它们会以相同的顺序传递给你的助手函数:

    {{ itemLookup "i3_4030U" "title" }}
    

    编辑:

    那为什么我会在网上看到他们命名模板的示例 辅助参数?

    您可以在包含另一个模板并希望将其当前数据上下文设置为其他内容时命名参数:

    {{> childTemplate param1="A" param2="B"}}
    

    在子模板标记中,您将能够引用{{param1}}{{param2}}

    空格键中可用的另一个 Handlebars 辅助功能是“哈希”可选参数值,您可以将其作为最后一个参数传递给辅助参数,您可以像这样使用它:

    HTML

    {{helper "A" "B" namedParam1="C" namedParam2="D"}}
    

    JS

    Template.registerHelper("helper", function(param1, param2, options){
      console.log("param1 :", param1);
      console.log("param2 :", param2);
      if(options && options.hash){
        console.log("namedParam1 :", options.hash.namedParam1);
        console.log("namedParam2 :", options.hash.namedParam2);
      }
    });
    

    【讨论】:

    • 呸呸呸呸……谢谢。那为什么我会在网上看到他们命名模板帮助器参数的示例?
    • 编辑了我的答案以涵盖空格键中的命名参数用例。
    • 谢谢!这个简洁的摘要正是我想要的!
    • @fuzzybabybunny :不要混合使用模板包含语法 {{> childTemplate}} 和辅助语法 {{helper}},因为它们不是同一个东西。您假设您不需要引用解析为模板助手的参数值是正确的。
    • @Aaron :您可以在帮助程序调用中混合命名和未命名参数(请参阅我的示例),但是在包含它时您必须命名传递给子模板的每个参数,请注意,使用此功能将完全废弃以前的数据上下文并用您提供的参数替换它。
    最近更新 更多