javascript - Node.js Handlebars {{object}} 不在 {{each}} 循环内渲染,而是在循环外渲染(其他 {{object_names}} 在循环内渲染)

标签 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}}&{{/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/

相关文章:

php - 从 OpenLayers JavaScript 接收 PHP 中的 POST 请求

javascript - Vue SPA 中的视频无法在 iPhone 上自动播放/加载

ruby-on-rails-3 - 无法在生产模式下访问 config.handlebars

regex - 在 Sublime Text 2 中编辑 HTML .tmLanguage 文件以处理内联 Handlebars 模板

javascript - 只有一个可能选择的下拉菜单表现得像一个开/关开关 : is it crossbrowser?

javascript - 即使页面可滚动,也会在屏幕中居中叠加

javascript - 将 Promise 的返回值返回到 Promise.All

sql - 使用 Sequelize 连接到本地 SQL Server

node.js - 为什么 redis 命令不能在我的 CoffeeScript 文件的 mocha 测试中运行?

javascript - Handlebars 助手未获取变量值