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

luk*_*emh 259 javascript handlebars.js

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

{
  people: [
    {"name":"Yehuda Katz"},
    {"name":"Luke"},
    {"name":"Naomi"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

使用这个:

<ul id="luke_should_be_here">
{{people[1].name}}
</ul>
Run Code Online (Sandbox Code Playgroud)

如果以上是不可能的,我如何编写一个可以访问数组中的spefic项的帮助器?

小智 397

试试这个:

<ul id="luke_should_be_here">
{{people.1.name}}
</ul>
Run Code Online (Sandbox Code Playgroud)

  • @OlivierLalonde,我不得不使用像`{{网站.[0] }. (129认同)
  • 这在任何地方都没有记录!真棒. (26认同)
  • {{user.links.websites.1}}或{{user.links.websites.0}}我得到'期待'ID'错误 (25认同)
  • 实际上,@ May,这不仅仅是一些幸运的格式,而是一种记录在案的语法.(见我的回答.) (4认同)
  • 那个数组中的最后一个元素呢? (4认同)
  • 对于ember.js,我必须做类似“ people.content.1.name”的事情 (2认同)
  • @lukemh 车把中的很多东西要么记录不充分,要么在任何地方都没有记录。呜呜呜…… (2认同)
  • 如果键是动态的,如何访问。例如,如果在此,ondex 值是一个变量。即{{people.var1.name}} ????? (2认同)

Arj*_*jan 307

以下,在索引之前有一个额外的点,就像预期的那样工作.这里,当索引后跟另一个属性时,方括号是可选的:

{{people.[1].name}}
{{people.1.name}}
Run Code Online (Sandbox Code Playgroud)

但是,方括号在以下方面是必需的:

{{#with people.[1]}}
  {{name}}
{{/with}}
Run Code Online (Sandbox Code Playgroud)

在后者中,使用不带方括号的索引号将得到一个:

Error: Parse error on line ...:
...     {{#with people.1}}                
-----------------------^
Expecting 'ID', got 'INTEGER'
Run Code Online (Sandbox Code Playgroud)

另外:括号(也)用于段文字语法,用于引用否则无效的实际标识符(而不是索引号).更多详细信息什么是有效标识符?

(在YUI中使用把手测试.)

2.xx更新

您现在可以使用get帮助程序:

(get people index)
Run Code Online (Sandbox Code Playgroud)

虽然如果您收到有关索引需要是字符串的错误,请执行以下操作:

(get people (concat index ""))
Run Code Online (Sandbox Code Playgroud)

  • 这应该是答案,因为它比选定的答案更彻底.当索引结束时需要方括号让我停留了一段时间! (10认同)

FMQ*_*MQB 19

{{#each array}}
  {{@index}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)


Bre*_*aub 15

如果未记录的功能不是您的游戏,则可以在此处完成相同的操作:

Handlebars.registerHelper('index_of', function(context,ndx) {
  return context[ndx];
});
Run Code Online (Sandbox Code Playgroud)

然后在模板中

{{#index_of this 1}}{{/index_of}}   
Run Code Online (Sandbox Code Playgroud)

在我抓住之前,我写了上面的内容

this.[0]
Run Code Online (Sandbox Code Playgroud)

如果没有自己的帮助,我不能看到一个人用车把太远了.


jul*_*bou 8

如果要使用动态变量

这不起作用:

{{#each obj[key]}}
...
{{/each}}
Run Code Online (Sandbox Code Playgroud)

你需要这样做:

{{#each (lookup obj key)}}
...
{{/each}}
Run Code Online (Sandbox Code Playgroud)

车把查找助手车把子表达式.


小智 7

如果您想先获取/最后一次,请尝试此操作.

{{#each list}}

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

{{/each}}


{{#each list}}

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

{{/each}}
Run Code Online (Sandbox Code Playgroud)


Fat*_*cet 7

当你在数组中循环时each,如果你想在当前项的上下文中访问另一个数组,你就是这样做的.

这是示例数据.


[
  {
    name: 'foo',
    attr: [ 'boo', 'zoo' ]
  },
  {
    name: 'bar',
    attr: [ 'far', 'zar' ]
  }
]

这是获取attr阵列中第一个项目的把手.

{{#each player}}
  <p> {{this.name}} </p>

  {{#with this.attr}}
    <p> {{this.[0]}} </p>
  {{/with}}

{{/each}}

这将输出

<p> foo </p>
<p> boo </p>

<p> bar </p>
<p> far </p>