我正在使用 Express、Node 和 Handlebars,但我无法弄清楚为什么我的 {{object_one}} 不会在 {{each}} 循环中呈现,但它会从内部呈现 {{object_two}} 并且{{object_one}} 在外面。
这是一个例子,因为我不确定我是否描述得很好:
{{#each inline_upsell_amounts}}
<div class="col-4"><a href="{{base_url}}?{{#if inline_ab_refcode}}refcode={{inline_ab_refcode}}&{{/if}}">$ {{this}}</a></div>
{{/each}}
<p>This shows the 'base_url' value: {{base_url}}</p>
因此在循环内 base_url 呈现为空或 ''。 base_url 的值是一个字符串 (url ' http://something.com ' )。
它在 each 循环外正确渲染,{{inline_ab_refcode}} 在循环内也能正确渲染字符串。
我尝试过不同的名称、不同的值、创建一个助手、用 IF 包装。我无法弄清楚我遇到的这个奇怪的错误。
希望这是您能看到的一些愚蠢的东西?!
最佳答案
您错过了一些东西:循环中的 {{base_url}} 与循环外的不一样: 在循环中 {{base_url}} 实际上是 {{inline_upsell_amounts.0.base_url}} 或 {{inline_upsell_amounts.1.base_url}} 等等...在它之外它是 {{base_url}}。因为循环的参数变成了新的引用。
您可以做的是引用父项并在循环内使用 {{../base_url}} 并在循环外使用 {{base_url}} 。如果您需要始终相同的引用,您还可以使用 {{@root/base_url}},它始终是根元素的 base_url。
所以你的代码看起来像这样:
{{#each inline_upsell_amounts}}
<div class="col-4"><a href="{{../base_url}}?{{#if inline_ab_refcode}}refcode={{inline_ab_refcode}}&{{/if}}">$ {{this}}</a></div>
{{/each}}
<p>This shows the 'base_url' value: {{base_url}}</p>
我希望我说得够清楚了。
关于javascript - Node.js Handlebars {{object}} 不在 {{each}} 循环内渲染,而是在循环外渲染(其他 {{object_names}} 在循环内渲染),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55484547/