如何通过表单提交或链接单击并刷新页面来过滤网页?

时间:2018-10-14 21:33:57

标签: javascript html handlebars.js server-side

我的模板:

<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是经过迭代并打印在我的模板中的对象的数组)

本质上,如果我在表单中键入标签,然后单击“提交”,它将重新加载页面,并仅显示“标签”元素包含表单中提交内容的列表项。另外,如果我单击其中一个标记(即锚链接),它将刷新页面并仅显示包含该标记的列表项。我不确定如何将服务器端代码与模板结合起来实现。

0 个答案:

没有答案