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) "" }}