【问题标题】:Custom handlebars each helper with index自定义车把,每个助手都有索引
【发布时间】:2016-01-16 03:39:41
【问题描述】:

我编写了一个循环遍历数组的助手,但现在我一直在为每次迭代获取可用的索引。我希望在我看来打印当前项目的索引。

helpers: {
    each_min: function(ary, min, options) {
      if(!ary || ary.length == 0)
          return options.inverse(this);

      var result = [];
      for(var i = 0; i < min; ++i)
          result.push(options.fn(ary[i]));
      return result.join('');
    }
}

我的模板

{{#each_min p.name 4}}
{{#if this}}
{{index}} {{this}}
{{else}}
<p>-</p>
{{/if}}
{{/each_min}}

【问题讨论】:

    标签: javascript handlebars.js


    【解决方案1】:

    查看车把文档,我在Block helpers 部分找到了相关信息。

    块助手还可以将私有变量注入其子模板。这对于添加不在原始上下文数据中的额外信息很有用。 ...确保在每个分配自己数据的助手中创建一个新的数据框。否则,下游助手可能会意外地改变上游变量。

    基于此,我进行了这些更改:

    模板:

    {{#each_min p.name 4}}
        {{#if this}}
            {{@index}} {{this}}
        {{else}}
            <p>-</p>
        {{/if}}
    {{/each_min}}
    

    助手:

    function(ary, min, options) {
        if(!ary || ary.length === 0) {
            return options.inverse(this);
        }
        var data;
        if (options.data) {
            data = Handlebars.createFrame(options.data);
        }
    
        var result = [];
        for(var i = 0; i < min; ++i) {
            if (data) {
                data.index = i;
            }
            result.push(options.fn(ary[i], {data: data}));
        }
    
        return result.join('');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 2014-10-05
      相关资源
      最近更新 更多