[英]pass number into Handlebars.template.foo(bar)
我有一个预编译的把手模板,我想将一个包含数字的变量传递到Handlebars.template.foo(bar)中。 因此它看起来像Handlebars.template.foo(bar,1)。
然后,我希望能够访问该号码,以便将其传递给我的助手。 所以我想做
{{myHelper bar num}}
{{something}}
{{myHelper}}
我已经设置好了助手来接收该数字,并且如果我调用{{myHelper bar 1}},它也会这样做,但是它会将数字从原始javascript传递到我遇到麻烦的变量'num'中。
这是我要求的帮手:
Handlebars.registerHelper('myHelper', function(bar, num){
var ret = ""
for(var i=0; i < bar.length; i++){
if(bar[i].id == num)
ret = ret + bar[i]
}
return ret;
});
如果可以的话,请让我知道这是否首先是可能的,其次是如何做到的。
提前致谢。
我不能完全确定您的问题是什么。 但是据我了解,您正在尝试创建一个类似于内置的“每个”的块帮助器。
如果是这样,您的用法是错误的。 阻止助手需要以#
开头,并以/
结束。 所以你的助手会像
{{#myHelper items num}}
{{something}}
{{/myHelper}}
如果要动态查找块帮助器中的属性,则需要将上下文对象传递给options参数内的函数。 您的帮手看起来像
Handlebars.registerHelper('myHelper', function(items, num, options){
var ret = ""
for(var i=0; i < items.length; i++){
if(items[i].id === num) {
ret = ret + options.fn(items[i]);
}
}
return ret;
});
为了测试这个助手,我创建了一个示例对象,例如
{
items: [{id: 1, something:'First Item'},
{id: 2, something:'Second Item'},
{id: 3, something:'Third Item'}
],
num: 3
}
您可以在tryhandlbars尝试使用此帮助程序 ,看看是否需要它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.