【问题标题】:What is the options parameter in a Handlebars helper function?Handlebars 辅助函数中的 options 参数是什么?
【发布时间】:2014-07-07 08:44:07
【问题描述】:

我正在创建一个自定义车把助手,但在通过终端编译时它总是抛出 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;
});

【问题讨论】:

    标签: handlebars.js assemble


    【解决方案1】:

    each 的把手示例是一个块助手,这意味着在 {{#each}}{{/each}} 标记之间有更多的标记或模板语法。当您使用此语法时,Handlebars 将 options 参数作为最后一个参数传递给您的助手。 options 对象包含一个 fn 方法,其工作方式与编译模板类似...var html = options.fn(context); 为您提供块内的渲染模板。

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

    由于您正在制作内联助手而不是块助手,我认为您只需要更改一行...

    return compImg[opts.fn(context)];
    

    return compImg[context];
    

    【讨论】:

      猜你喜欢
      • 2015-12-31
      • 1970-01-01
      • 2017-10-19
      • 2018-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 1970-01-01
      相关资源
      最近更新 更多