Handlebars - 如何访问 "each" 范围内的模板数据?

Handlebars - How to access template data in "each" scope?

我使用预编译的 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>

但是也没用。 (在那种情况下,模板 returns null 而不是 HTML 代码,我想那是因为它无法以某种方式找到引用,但我没有收到任何错误消息,它是真的很难调试,有什么建议吗?当我 运行 Handlebars.templates[path](data))

我如何运行 each 循环并提供模板数据?

以下是我提供给模板的数据:

{
  "ns": 'main-layout-default-',
  "paymentMethods": [{
    "paymentCardCode": "CB",
    "contractId": "1234"
  }]
}

问题就在这里,

{
  "ns": 'main-layout-default-', // <= missing comma
  "paymentMethods": [{
    "paymentCardCode": "CB",
    "contractId": "1234"
  }]
}

"ns" 在 "paymentMethods" 之外。它不能超出它的范围。

{
  "ns": 'main-layout-default-', 
  "paymentMethods": [{
  "paymentCardCode": "CB",
  "contractId": "1234"
 }]

}

尝试

{  
  "paymentMethods": [{
  "ns": 'main-layout-default-', 
  "paymentCardCode": "CB",
 "contractId": "1234"
 }]
}

否则,如果所有生成数据的 "ns" 值都相同,则尝试

<button id="main-layout-default-{{paymentCardCode}}">{{paymentCardCode}}</button>

这是图书馆的不匹配。我的代码是由 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