如何在{{#each}}内添加属性{{var}}?

时间:2018-06-20 02:10:04

标签: jquery html handlebars.js

我想知道是否有任何方法可以在HTML中添加双重修饰的{{var}}嵌入。

例如:
我在这里有.hbs代码:

{{#each tables.books.data}}
<tr>
<td>...</td>
<td>...</td>
</tr>
{{/each}}

还有我的.js代码:

$(tableID+">tbody>tr").attr("tabindex", "{{@key}}");

我希望它在网络上看起来像这样:

<tr tabindex="1">
<td>...</td>
<td>...</td>
</tr>
<tr tabindex="2">
<td>...</td>
<td>...</td>
</tr>
<tr tabindex="3">
<td>...</td>
<td>...</td>
</tr>
...

但是目前我正在体验:

<tr tabindex="{{@key}}">
<td>...</td>
<td>...</td>
</tr>
<tr tabindex="{{@key}}">
<td>...</td>
<td>...</td>
</tr>
<tr tabindex="{{@key}}">
<td>...</td>
<td>...</td>
</tr>
...

是否有其他方法或函数可以呈现双重填充的{{var}}嵌入? 回顾一下,我的目标是在页面加载时在attribute={{@key}}中添加<tr>
我也不打算安装其他软件包,但是如果那是唯一的方法,那就可以了。

1 个答案:

答案 0 :(得分:-2)

Handlebars是一种模板语言,这意味着Javascript无法与其完全交互,因为Handlebars是在服务器端呈现的,而Javascript是在客户端执行的-模板(或API)实际上是两者之间的通信媒介他们俩。此外,JavaScript还将"{{@key}}"读为字符串文字,而不是您正在考虑的handlebars变量。如果您希望把手将密钥打印到模板中,则必须将其添加到hbs模板本身中:

<tr tabindex="{{@key}}">

如果您绝对必须在Javascript中使用它,则可以通过数据属性之类的方式传递它:

// in .hbs file
<tr data-tabindex="{{@key}}">

// in js
tr = $('tr')[0] // grab a <tr> element
tr.data('tabindex') // should be whatever value was in @key