Handlebars帮助函数中的options参数是什么?



我正在创建一个自定义handlebar helper,但它总是在通过终端编译时抛出Object #<Object> has no method 'fn'

我的车把助手是:

module.exports.register = function (Handlebars, opts, params)  { 
    Handlebars.registerHelper('compimg', function (context, opts)  { 
        var compImg = ["assets/img/icon-nope.png","assets/img/icon-check.png"];
        return compImg[opts.fn(context)];
    });
}

我的。hbs文件是:

{{#each checkable}}
   <div class="col-md-3 col-xs-3 icon-container"><img src="{{compimg this}}"></div>
{{/each}}

我的JSON文件是:

{
    "desc": "blablabla",
    "checkable": [
        1,
        1,
        1,
        1
    ]
}

当我检查官方文档时,我发现了这段代码。有人能解释一下contextoptions到底是什么吗?

Handlebars.registerHelper('each', function(context, options) {
  var ret = "";
  for(var i=0, j=context.length; i<j; i++) {
    ret = ret + options.fn(context[i]);
  }
  return ret;
});

each的把手示例是一个块helper,这意味着在{{#each}}{{/each}}标记之间有更多的标记或模板语法。当使用这种语法时,Handlebars将options参数作为最后一个参数传递给helper。options对象包含一个fn方法,它的工作方式就像一个编译过的模板…var html = options.fn(context);为您提供了从块内部呈现的模板。

context变量是你传递给你的助手的东西,如果你想要更多,它可以是任意数量的参数。

既然你正在制作一个内联helper而不是块helper,我认为你只需要改变一行…

return compImg[opts.fn(context)];

return compImg[context];

最新更新