我使用预编译的Handlebars模板。 我有以下代码:
<div id="{{ns}}paymentMethodsTabs">
{{#each paymentMethods}}
<button id="{{ns}}{{paymentCardCode}}">{{paymentCardCode}}</button>
{{/each}}
</div>
在第一个div
中,ns
模板数据可用并设置。
但是在each paymentMethods
范围内,我无法访问它,我尝试了
<button id="{{../ns}}{{paymentCardCode}}">{{paymentCardCode}}</button>
但它也不起作用。 (在这种情况下,模板返回null
而不是HTML代码,我想这是因为它无法以某种方式找到引用,但我没有收到任何错误消息,而且它很难调试,任何建议都是这个?当我运行Handlebars.templates[path](data)
)
如何运行each
循环并提供模板数据?
以下是我提供给模板的数据:
{
"ns": 'main-layout-default-',
"paymentMethods": [{
"paymentCardCode": "CB",
"contractId": "1234"
}]
}
答案 0 :(得分:0)
问题出在这里,
{
"ns": 'main-layout-default-', // <= missing comma
"paymentMethods": [{
"paymentCardCode": "CB",
"contractId": "1234"
}]
}
答案 1 :(得分:0)
&#34; ns&#34;在&#34; paymentMethods&#34;之外。它不能超出它的范围。
{
"ns": 'main-layout-default-',
"paymentMethods": [{
"paymentCardCode": "CB",
"contractId": "1234"
}]
}
尝试
{
"paymentMethods": [{
"ns": 'main-layout-default-',
"paymentCardCode": "CB",
"contractId": "1234"
}]
}
或者如果&#34; ns&#34;所有生成的数据的值都相同,然后尝试
<button id="main-layout-default-{{paymentCardCode}}">{{paymentCardCode}}</button>
答案 2 :(得分:0)
这是图书馆的不匹配。我的代码是由Handlebars 3.0版本生成的,但是我使用了运行时2.0,这就是它失败的原因。
所以解决方案确实如下:
<div id="{{ns}}paymentMethodsTabs">
{{#each paymentMethods}}
<button id="{{../ns}}{{paymentCardCode}}">{{paymentCardCode}}</button>
{{/each}}
</div>
感谢帮助我的@kpdecker。 https://github.com/wycats/handlebars.js/issues/1011#issuecomment-96694058