Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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,我是新手,虽然我找到了一个解决办法,但我想知道为什么一个注册助手可以工作而另一个不行。不起作用的例子是HB文档中的一个例子 HTML: 编译器: $.each(nav, function() { var obj = this, src = obj.selector.html(), template = Handlebars.compile(src), html = template(obj.data); obj.selector.html(html)

我是新手,虽然我找到了一个解决办法,但我想知道为什么一个注册助手可以工作而另一个不行。不起作用的例子是HB文档中的一个例子

HTML:

编译器:

$.each(nav, function() {
  var obj = this,
      src = obj.selector.html(),
      template = Handlebars.compile(src),
      html = template(obj.data);

  obj.selector.html(html);
});
HB Helper不工作-未定义上下文:

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;
});

非常感谢您的帮助。

在查看JS的其余部分之前,我可以指出JSON看起来是错误的

名称、选择器和数据在JSON中第二次出现时将被覆盖。如果这只是因为粘贴时忽略了一些位,那么请忽略我;o

但如果这是真正的JSON,那么在查看任何功能性内容之前,它需要更改

<script>
var nav = [
{
  name: 'global',
  selector: $('.global-nav'),
  data: [
    {
      text: 'Page 1',
      href: 'page1.html'
    }, {
      text: 'Page 2',
      href: 'page2.html'
    }
  ]
}, // this line 
{  // and this line added
  name: 'content',
  selector: $('.content-nav'),
  data: [
    {
      text: 'Section 1',
      href: '#section1'
    }, {
      text: 'Section 2',
      href: '#section2'
    }
  ]
}
];
</script>
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.registerHelper('each', function(context, options) {
  var ret = "";

  for(var i=0, j=this.length; i<j; i++) {
    ret = ret + options.fn(this[i]);
  }

  return ret;
});
<script>
var nav = [
{
  name: 'global',
  selector: $('.global-nav'),
  data: [
    {
      text: 'Page 1',
      href: 'page1.html'
    }, {
      text: 'Page 2',
      href: 'page2.html'
    }
  ]
}, // this line 
{  // and this line added
  name: 'content',
  selector: $('.content-nav'),
  data: [
    {
      text: 'Section 1',
      href: '#section1'
    }, {
      text: 'Section 2',
      href: '#section2'
    }
  ]
}
];
</script>