我正试图在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}}
回调方法永远不会收到第二个参数。
我有什么问题吗?
答案 0 :(得分:1)
在Meteor中,块助手不接受arbtirary位置和关键字 非块助手等参数。相反,参数被处理 一起作为嵌套的Handlebars助手调用表达式。
但您应该能够传递仅关键字参数:
确切的规则是始终使用no来调用块助手 参数;一个位置参数(没有关键字参数);或者只是 关键字参数。存在任何非关键字参数,如foo 在前面的示例中,导致所有后续位置和关键字 要传递给foo的参数(如果它是一个函数,或者 吞咽)。否则,如果只有关键字参数,则为 传递给帮助器,因此您可以定义一个包含任何一个的块帮助器 通过给它们命名的参数数量:{{#helper x = 1 y = 2 Z = 3}} ... {{/辅助}}
这应该有效:
{{#myList myData=data className="myClassName"}}
{{name}}
{{/myList}}