把手 - 如何访问“每个”范围内的模板数据?

时间:2015-04-24 10:14:45

标签: javascript handlebars.js each

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

3 个答案:

答案 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