Javascript 如何通过把手中的索引访问访问数组项?

Javascript 如何通过把手中的索引访问访问数组项?,javascript,handlebars.js,Javascript,Handlebars.js,我试图在把手模板内的数组中指定项的索引: { people: [ {"name":"Yehuda Katz"}, {"name":"Luke"}, {"name":"Naomi"} ] } <ul id="luke_should_be_here"> {{this.1.name}} </ul> 使用此选项: <ul id="luke_should_be_here"> {{people[1].name}} </

我试图在把手模板内的数组中指定项的索引:

{
  people: [
    {"name":"Yehuda Katz"},
    {"name":"Luke"},
    {"name":"Naomi"}
  ]
}
  <ul id="luke_should_be_here">
  {{this.1.name}}
  </ul>
使用此选项:

<ul id="luke_should_be_here">
{{people[1].name}}
</ul>
    {{人[1].name}
如果无法执行上述操作,我将如何编写可以访问阵列中特定项的帮助程序?

尝试以下操作:

<ul id="luke_should_be_here">
{{people.1.name}}
</ul>
    {{people.1.name}
以下内容在索引前加上一个点,效果与预期一样。在这里,当索引后跟另一个属性时,方括号是可选的:

{{people.[1].name}
{{people.1.name}
但是,以下内容中需要方括号:

{{{与人相处。[1]}
{{name}}
{{/与}}
在后者中,使用不带方括号的索引号将得到一个:

错误:第行分析错误…:
...     {{{与人相处。1}
-----------------------^
应为'ID',应为'INTEGER'
旁白:括号(也)用于表示实际标识符(不是索引号),否则将无效。详情请参阅

(使用YUI中的把手进行测试。)

2.xx更新 您现在可以使用
get
帮助程序执行以下操作:

(获取人员索引)
尽管如果您得到一个关于索引必须是字符串的错误,请执行以下操作:

(获取人员(concat索引“”)

如果未记录的功能不是您的游戏,也可以在此处完成:

Handlebars.registerHelper('index_of', function(context,ndx) {
  return context[ndx];
});
然后在模板中

{{#index_of this 1}}{{/index_of}}   
我写了上面的内容,然后我得到了

this.[0]

如果你不写你自己的助手,我看不到有人拿着车把走得太远。

如果你想拿第一个/最后一个,请试试这个

{{#each list}}

    {{#if @first}}
        <div class="active">
    {{else}}
        <div>
    {{/if}}

{{/each}}


{{#each list}}

    {{#if @last}}
        <div class="last-element">
    {{else}}
        <div>
    {{/if}}

{{/each}}
{{{#每个列表}
{{{#if@first}}
{{else}
{{/if}
{{/每个}}
{{{#每个列表}
{{{#if@last}}
{{else}
{{/if}
{{/每个}}

如果未命名数组(仅将数组传递给模板),也可以使用以下语法:

    {{this.1.name}

在数组中循环时,如果要访问当前项目上下文中的另一个数组,请按如下方式执行

下面是示例数据

[ { name: 'foo', attr: [ 'boo', 'zoo' ] }, { name: 'bar', attr: [ 'far', 'zar' ] } ] 这将输出

<p> foo </p> <p> boo </p> <p> bar </p> <p> far </p> 福

嘘声

酒吧


如果要使用动态变量

这行不通:

{{#each obj[key]}}
...
{{/each}}
您需要执行以下操作:

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

请参见和。

在我的示例中,我希望访问自定义帮助程序中的数组,如下所示

{{#ifCond arr.[@index] "foo" }}
这不起作用,但@julesbou提出的答案起了作用

工作代码:

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

希望这有帮助!干杯。

我在{{user.links.websites.1}或{{user.links.websites.0}}@OlivierLalonde上得到了
预期的'ID'
错误。事实上,@Matt,这不仅仅是一种幸运的格式,而是一种有文档记录的语法。(见我的答案。)对于ember.js,我必须做一些类似于
people.content.1.name
@lukemm的事情。车把中的很多东西要么没有很好的文档记录,要么在任何地方都没有文档记录。Yayyyy…这应该是答案,因为它比所选答案更全面。索引结束时需要方括号,这让我陷入了一段时间!这就成功了!谢谢上面选择的答案不正确,请将其标记为正确答案。
{{with people.1}
解决方案对我有效,使用了
com.github.jknack:handlebar:4.1.2
。试图找到一种方法来调整索引号,以便我可以对照此项检查循环中上一项的值。有什么想法吗?如果attr数组对于不同的对象有不同数量的元素,那么遍历它的过程是什么?例如:[{name:'foo',attr:['boo',zoo']},{name:'bar',attr:['far','zar','sar]}]那么你打算如何显示数组中每个对象的所有attr?我没有尝试过,但我假设在{{使用这个.attr}
时,这个
会工作,而不是这个。[0]太棒了,这是正确的答案@索引将为您提供数组中的位置。在这种情况下,您将如何调整索引值?ie我想比较索引和索引-1中的值(不起作用)。谢谢
{{#ifCond arr.[@index] "foo" }}
{{#ifCond (lookup arr @index) "" }}