Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义把手每个辅助对象都带有索引_Javascript_Handlebars.js - Fatal编程技术网

Javascript 自定义把手每个辅助对象都带有索引

Javascript 自定义把手每个辅助对象都带有索引,javascript,handlebars.js,Javascript,Handlebars.js,我编写了一个在数组上循环的助手,但现在我一直在为每次迭代获取可用的索引。我希望打印当前项目的索引 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)

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

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('');
    }
}
帮助程序:{
每个最小值:函数(ary、最小值、选项){
如果(!ari | | ari.length==0)
返回选项。反向(此);
var结果=[];
对于(变量i=0;i
我的模板

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

{{/if} {{/each_min}
查看车把文档,我在该部分找到了相关信息

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

基于此,我做了以下更改:

模板

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

{{/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('');
}
功能(ary、min、选项){
如果(!ari | | ari.length==0){
返回选项。反向(此);
}
var数据;
如果(选项.数据){
data=handlebar.createFrame(options.data);
}
var结果=[];
对于(变量i=0;i