我无法使用Handlebars助手来处理meteorjs中的参数

时间:2013-07-19 13:03:23

标签: javascript meteor handlebars.js

我正试图在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}}

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

我有什么问题吗?

1 个答案:

答案 0 :(得分:1)

来自meteor/handlebars

  

在Meteor中,块助手不接受arbtirary位置和关键字   非块助手等参数。相反,参数被处理   一起作为嵌套的Handlebars助手调用表达式。

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

  

确切的规则是始终使用no来调用块助手   参数;一个位置参数(没有关键字参数);或者只是   关键字参数。存在任何非关键字参数,如foo   在前面的示例中,导致所有后续位置和关键字   要传递给foo的参数(如果它是一个函数,或者   吞咽)。否则,如果只有关键字参数,则为   传递给帮助器,因此您可以定义一个包含任何一个的块帮助器   通过给它们命名的参数数量:{{#helper x = 1 y = 2   Z = 3}} ... {{/辅助}}

这应该有效:

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