【发布时间】: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的数组。#each在years上,然后在循环中,从../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