我试图在一个句柄模板中的数组中指定一个项目的索引:

{
  people: [
    {"name":"Yehuda Katz"},
    {"name":"Luke"},
    {"name":"Naomi"}
  ]
}

用这个:

<ul id="luke_should_be_here">
{{people[1].name}}
</ul>

如果上面是不可能的,我将如何编写一个助手,可以访问数组中的特定项目?


当前回答

如果数组没有被命名(只有数组被传递给模板),也可以使用下面的语法:

  <ul id="luke_should_be_here">
  {{this.1.name}}
  </ul>

其他回答

如果未记录的功能并不是你的游戏,你也可以采用同样的方法:

Handlebars.registerHelper('index_of', function(context,ndx) {
  return context[ndx];
});

然后在模板中

{{#index_of this 1}}{{/index_of}}   

在我得到之前,我写了上面的内容

this.[0]

如果不自己写帮手,我不认为有人会用把手走得太远。

如果数组没有被命名(只有数组被传递给模板),也可以使用下面的语法:

  <ul id="luke_should_be_here">
  {{this.1.name}}
  </ul>

如果你想使用动态变量

这行不通:

{{#each obj[key]}}
...
{{/each}}

你需要做的是:

{{#each (lookup obj key)}}
...
{{/each}}

参见句柄查找助手和句柄子表达式。

试试这个:

<ul id="luke_should_be_here">
{{people.1.name}}
</ul>

在我的例子中,我想访问一个自定义helper中的数组,

{{#ifCond arr.[@index] "foo" }}

这并没有起作用,但是@julesbou建议的答案起作用了。

工作代码:

{{#ifCond (lookup arr @index) "" }}

希望这能有所帮助!欢呼。