我正在尝试使用Meteor创建自定义帮助程序。关于这里的文档: https://github.com/meteor/meteor/wiki/Handlebars
我试图按如下方式定义我的助手:
Template.myTemplate.testHelper = function(foo, bar, options) {
console.log(foo);
console.log(bar);
}
我的模板如下:
<template name="myTemplate">
{{#testHelper "value1" "value2"}}
{{/testHelper}}
</template>
查看我的控制台输出,我预计会看到两行输出:
value1
value2
但是我的控制台看起来像:
value1
function (data) {
// don't create spurious annotations when data is same
// as before (or when transitioning between e.g. `window` and
// `undefined`)
if ((data || Handlebars._defaultThis) ===
(old_data || Handlebars._defaultThis))
return fn(data);
else
return Spark.setDataContext(data, fn(data));
}
注意,我对流星和车把都是全新的。我想使用下划线会更开心,但是流星的文档几乎完全瞥了一眼下划线。我在定义辅助函数时做错了吗?它似乎没有看到第二个参数“bar”,而是将其解释为选项。 (注意:如果我是console.log(选项),则返回'undefined')。
Meteor版本0.4.0(8f4045c1b9)
答案 0 :(得分:59)
您的逻辑很好,只需对模板进行一些更改
<template name="myTemplate">
{{testHelper "value1" "value2"}}
</template>
请记住testHelper函数仅在myTemplate模板中定义。
如果你想全局注册testHelper,你需要做这样的事情
Handlebars.registerHelper('testHelper', function(foo, bar){
console.log(foo);
console.log(bar);
});
玩得开心
答案 1 :(得分:1)
除了
<template name="myTemplate">
{{testHelper "value1" "value2"}}
</template>
不是将值作为参数传递,而是将函数作为参数传递。这是
的代码<template name="myTemplate">
{{ testHelper1 (testHelper2 "value2") }}
</template>
欢呼声!!!!!