【问题标题】:Node.js Handlebars {{object}} does not render inside {{each}} loop, but renders outside of loop (and other {{object_names}} render within the loop)Node.js Handlebars {{object}} 不在 {{each}} 循环内渲染,而是在循环外渲染(以及其他 {{object_names}} 在循环内渲染)
【发布时间】:2019-04-02 22:43:33
【问题描述】:

我正在使用 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')。

它在每个循环之外呈现正确,并且 {{inline_ab_refcode}} 也是一个字符串在循环内呈现良好。

我尝试了不同的名称、不同的值、创建一个助手、用 IF 包装。我无法弄清楚我有这个奇怪的错误。

希望你能看到一些愚蠢的东西?!

【问题讨论】:

    标签: javascript node.js handlebars.js


    【解决方案1】:

    你错过了一些东西:循环中 {{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>
    

    我希望我已经足够清楚了。

    【讨论】:

    • 感谢您的成功!我没有在车把每个循环示例中看到 ../ 文件夹类型对象访问
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 2021-12-29
    • 2015-04-15
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多