#javascript #node.js #handlebars.js
#javascript #node.js #handlebars.js
Вопрос:
Я использую 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}}amp;{{/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. Я не могу разобраться с этой странной ошибкой, которая у меня есть.
Надеюсь, это что-то глупое, что вы можете видеть?!
Ответ №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}}amp;{{/if}}">$ {{this}}</a></div>
{{/each}}
<p>This shows the 'base_url' value: {{base_url}}</p>
Надеюсь, я выразился достаточно ясно.
Комментарии:
1. Спасибо, что это сработало! Я не видел доступ к объекту типа ../ folder в примерах handlebars каждого цикла