我正在尝试在把手模板中指定数组中项目的索引:
{
people: [
{"name":"Yehuda Katz"},
{"name":"Luke"},
{"name":"Naomi"}
]
}
使用:
<ul id="luke_should_be_here">
{{people[1].name}}
</ul>
如果上述情况不可能,我如何编写一个可以访问数组中特定项目的助手?
答案 0 :(得分:381)
试试这个:
<ul id="luke_should_be_here">
{{people.1.name}}
</ul>
答案 1 :(得分:297)
以下在索引之前有一个额外的点,正如预期的那样工作。这里,当索引后跟另一个属性时,方括号是可选的:
{{people.[1].name}}
{{people.1.name}}
但是,方括号 :
{{#with people.[1]}}
{{name}}
{{/with}}
在后者中,使用不带方括号的索引号将得到一个:
Error: Parse error on line ...:
... {{#with people.1}}
-----------------------^
Expecting 'ID', got 'INTEGER'
作为旁白:括号(也)用于segment-literal syntax,用于引用否则无效的实际标识符(不是索引号)。 What is a valid identifier?
中的更多详细信息(在YUI中使用把手测试。)
您现在可以使用get
帮助程序:
(get people index)
虽然如果您收到有关索引需要为字符串的错误,请执行:
(get people (concat index ""))
答案 2 :(得分:17)
{{#each array}}
{{@index}}
{{/each}}
答案 3 :(得分:15)
如果您的游戏没有未记录的功能,可以在此处完成相同的操作:
Handlebars.registerHelper('index_of', function(context,ndx) {
return context[ndx];
});
然后在模板中
{{#index_of this 1}}{{/index_of}}
在我抓住
之前,我写了上述内容this.[0]
在没有自己的帮助者的情况下,我无法看到一个人走得太远。
答案 4 :(得分:8)
如果您想使用动态变量
这不起作用:
{{#each obj[key]}}
...
{{/each}}
你需要这样做:
{{#each (lookup obj key)}}
...
{{/each}}
答案 5 :(得分: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>
答案 6 :(得分:6)
如果您想先获取/最后一次,请尝试此操作。
{{#each list}}
{{#if @first}}
<div class="active">
{{else}}
<div>
{{/if}}
{{/each}}
{{#each list}}
{{#if @last}}
<div class="last-element">
{{else}}
<div>
{{/if}}
{{/each}}
答案 7 :(得分:0)
如果未命名数组(仅将数组传递给模板),也可以使用以下语法:
<ul id="luke_should_be_here">
{{this.1.name}}
</ul>
答案 8 :(得分:0)
就我而言,我想像这样访问自定义帮助程序中的数组,
{{#ifCond arr.[@index] "foo" }}
这没有用,但是@julesbou建议的答案有用。
工作代码:
{{#ifCond (lookup arr @index) "" }}
希望这会有所帮助!干杯。