我无法让Handlebars助手处理metrojs中的参数

I cannot get Handlebars helpers to work with arguments in meteorjs

本文关键字:metrojs 处理 参数 Handlebars      更新时间:2023-09-26

我试图在MeteorJS中使用一个简单的带参数的手把助手。

让我给你看一个例子:

{{#myList data className="myClassName"}}
  {{name}}
{{/myList}}

助手是这样声明的:

Handlebars.registerHelper('myList', function(context, options) {
  if (context && context.length){
    var className = options.hash.className || "", 
       ret = "<ul class='"+ className +"'>";
    for(var i=0, j=context.length; i<j; i++) {
      ret = ret + options.fn(context[i]);
    }
    return ret + "</ul>";
  }
});

但是属性"hash"始终是一个空数组。

如果我测试像这样的版本:

{{#myList data "myClassName"}}
  {{name}}
{{/myList}}

回调方法从不接收第二个参数。

我做错什么了吗?

来自流星/车把:

在Meteor中,块辅助对象不接受任意位置和关键字像非块帮助程序这样的参数。相反,这些论点会被处理一起作为嵌套的Handlebars辅助调用表达式。

但是您应该能够只传递关键字参数:

确切的规则是,块帮助程序总是在没有的情况下调用论据;一个位置参数(没有关键字参数);或仅关键字参数。任何非关键字参数的存在,如foo在上一个示例中,导致以下所有位置和关键字要传递给foo的参数(如果它是一个函数,或者吞咽)。否则,如果只有关键字参数,则它们是传递给辅助对象,这样您就可以定义一个块辅助对象参数的数目(通过给它们命名):{{#helper x=1 y=2z=3}}。。。{{/helper}}。

这应该有效:

{{#myList myData=data className="myClassName"}}
  {{name}}
{{/myList}}