繁体   English   中英

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

[英]How do I access an access array item by index in handlebars?

我正在尝试在车把模板中指定数组中项目的索引:

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

使用这个:

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

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

尝试这个:

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

以下内容,在 index 之前有一个额外的点,按预期工作。 此处,当索引后跟另一个属性时,方括号是可选的:

{{people.[1].name}}
{{people.1.name}}

但是,在以下情况下需要方括号:

{{#with people.[1]}}
  {{name}}
{{/with}}

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

Error: Parse error on line ...:
...     {{#with people.1}}                
-----------------------^
Expecting 'ID', got 'INTEGER'

顺便说一句:括号(也)用于段文字语法,以引用否则无效的实际标识符(不是索引号)。 什么是有效标识符?

(在 YUI 中使用 Handlebars 进行测试。)

2.xx 更新

您现在可以为此使用get助手:

(get people index)

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

(get people (concat index ""))
{{#each array}}
  {{@index}}
{{/each}}

如果未记录的功能不是你的游戏,同样可以在这里完成:

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

然后在模板中

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

我在掌握之前写了上面的内容

this.[0]

如果不编写自己的助手,我看不到一个人在车把上走得太远。

如果要使用动态变量

这行不通:

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

你需要做:

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

请参阅车把查找助手车把子表达式

当您在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>

如果您想首先/最后获取,请尝试此操作。

{{#each list}}

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

{{/each}}


{{#each list}}

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

{{/each}}

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

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

在我的情况下,我想像这样访问自定义助手中的数组,

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

哪个不起作用,但@julesbou 建议的答案起作用了。

工作代码:

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

希望这可以帮助! 干杯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM