繁体   English   中英

将数字传递到Handlebars.template.foo(bar)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM