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

IT技术 javascript handlebars.js
2021-01-24 04:25:58

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

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

使用这个:

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

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

6个回答

试试这个:

<ul id="luke_should_be_here">
{{people.1.name}}
</ul>
事实上,@Matt,这不仅仅是一些幸运的格式,而是一种记录在案的语法。(见我的回答。)
2021-03-15 04:25:58
@lukemh 车把中的很多东西要么记录不充分,要么在任何地方都没有记录。呜呜呜……
2021-03-19 04:25:58
我得到Expecting 'ID'的错误与{{user.links.websites.1}}或{{user.links.websites.0}}
2021-03-31 04:25:58
@OlivierLalonde,我不得不使用类似{{ websites.[0] }}.
2021-04-06 04:25:58
对于 ember.js,我必须做类似的事情 people.content.1.name
2021-04-13 04:25:58

以下内容,在 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 ""))
{{#with people.1}}解决方案对我有用,使用com.github.jknack:handlebars:4.1.2.
2021-03-21 04:25:59
这成功了!谢谢...上面选择的答案没有,请将其标记为正确的。
2021-03-24 04:25:59
试图找到一种方法来调整索引号,以便我可以根据循环中的前一项检查该值。有任何想法吗?
2021-04-01 04:25:59
这应该是答案,因为它比选择的答案更彻底。当索引在末尾时需要方括号让我卡住了一段时间!
2021-04-03 04:25:59
{{#each array}}
  {{@index}}
{{/each}}
正确答案,任何人都可以帮助我如何打印从 1 开始的索引。默认情况下它从 0 开始。
2021-03-17 04:25:59
太棒了,这是正确的答案。@index 会给你在数组中的位置。
2021-03-31 04:25:59

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

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

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

查找在这里工作,即使索引是来自前一个块的列表: {{lookup ../../btnPercentages @../index}}
2021-03-15 04:25:59