【问题标题】:Need help looping through children of variable using express-handlebars需要帮助使用 express-handlebars 遍历变量的子项
【发布时间】:2021-10-04 06:43:53
【问题描述】:

我正在开发一个应用程序。我正在使用 Javascript 和 express、express-handlebars 和 mysql。

我正在尝试创建一个类似于“/viewowner/:ID/scoreboards/:year”的路线,其中 ID 是所有者的唯一 ID,年份代表数据的年份。

我的 SQL 查询依赖于获取 id 和年份。

目前我的 a 标签看起来像:

{{#each output}}
<li class="list-inline-item"><a href="/viewowner//scoreboards/{{this}}">{{this}}</a></li>
{{/each}}

这将遍历输出数组并为我获取输出中项目的列表。该链接附有年份,但我无法弄清楚如何将 id 输入链接。 id 变量来自不同的数组 (s1),因此使用一些 JavaScript 隔离了 id 编号并使用 .push() 将 id 推送到输出数组中。

示例输出数组现在看起来像 [2015,2016,2017,2018,2019,2020,3]

我试图通过创建一个新变量来解决这个问题

var l = output.length

var yearlinks ={
    'years': output,
    'id': output.splice(l-1,1)
}

然而,这给了我两个新数组 yearlinks.years 是一个包含所有年份的数组,而 yearlinks.id 只包含 id 号。

我尝试遍历 yearlinks 的子级,但没有成功。

{{#each yearlinks}}
<li class="list-inline-item"><a href="/viewowner/{{id}}/scoreboards/{{#each years}}{{this}}{{/each}}">{{#each years}}{{this}}{{/each}}</a></li>
{{/each}}

希望有人知道如何解决这个问题,或者可以指出我学习如何解决这个问题的方向。谢谢!

【问题讨论】:

  • 我不会将id 推送到output 数组上。你只需要一个years 和一个id 的数组。 #eachyears 上,然后在循环中,从../id 中获取id
  • 感谢您的回复!如果我使用#each 循环遍历年份数组“输出”,那么如果它不在输出中,我将如何获取 id。
  • 您肯定需要在res.render 调用中传递的数据对象中包含年份数组和id - 类似于您对yearlinks 对象所做的事情。但是你不会#each 超过yearlinks。您应该 #each 超过 yearlinks.years 并在循环内引用 ../id 的 id。
  • Handlebars 具有评估上下文。 yearlinks.id 不存在于 #each 循环的上下文中。您需要使用路径在更高的上下文中访问对象。我认为您需要的路径是../yearlinks.id
  • 成功了!惊人的!非常感谢帮忙。我现在将阅读更多关于把手和评估上下文的文档!

标签: javascript mysql express handlebars.js


【解决方案1】:

Handlebars 中的评估上下文

{{#each yearlinks.years}}
<li class="list-inline-item"><a href="/viewowner/{{../yearlinks.id}}/scoreboards/{{this}}">{{this}}</a></li>
  {{/each}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多