我的模板:
<h3> artworks </h3>
<form action="/" method="get">
<label for="filter">Filter by a tag: </label>
<input id="tag" type="text" name="name_field">
<input type="submit" value="Submit">
</form>
<ul class="artwork">
{{#each artwork}}
<li>
<h4>{{this.date}} {{this.title}}</h4>
<pre>
{{this.ascii}}
</pre>
tags:
{{#each this.tags}}
<a href="/?name_field={{{this}}}">{{{this}}}</a>
{{/each}}
</li>
{{/each}}
</ul>
服务器端代码中随附的Get方法:
app.get('/', (req, res) => {
console.log(req.params.name_field);
if (req.params.name_field !== undefined) {
const b = a.filter(art => art.tags.includes(req.params.name_field));
res.render('mytemp', {artwork: b.reverse()});
}
else {
res.render('mytemp', {artwork: a.reverse()});
}
});
(a是经过迭代并打印在我的模板中的对象的数组)
本质上,如果我在表单中键入标签,然后单击“提交”,它将重新加载页面,并仅显示“标签”元素包含表单中提交内容的列表项。另外,如果我单击其中一个标记(即锚链接),它将刷新页面并仅显示包含该标记的列表项。我不确定如何将服务器端代码与模板结合起来实现。