2

我正在尝试在 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>";
  }
});

但是属性“哈希”总是一个空数组。

如果我测试这样的版本:

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

回调方法永远不会收到第二个参数。

有什么我做错了吗?

4

1 回答 1

2

流星/车把

在 Meteor 中,块助手不会像非块助手那样采用任意位置和关键字参数。相反,这些参数被一起视为嵌套的 Handlebars 助手调用表达式。

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

确切的规则是块助手总是在没有参数的情况下被调用;一个位置参数(并且没有关键字参数);或仅关键字参数。任何非关键字参数的存在,如前面示例中的 foo,都会导致所有随后的位置和关键字参数传递给 foo(如果它是一个函数,或者被吞没)。否则,如果只有关键字参数,它们将被传递给助手,因此您可以定义一个块助手,通过给它们命名来接受任意数量的参数:{{#helper x=1 y=2 z=3}}。 ..{{/帮手}}。

这应该有效:

{{#myList myData=data className="myClassName"}}
  {{name}}
{{/myList}}
于 2013-07-19T15:06:37.030 回答