javascript - Jade Pug 每次迭代都通过选择框选择进行更改

标签 javascript node.js express pug

我刚刚开始使用 Pug/Jade 模板来迭代我从 Express 应用程序发送的事件对象。它工作得很好,但现在我添加了一个选择框,其中包含由事件对象中的 field 填充的下拉列表(选择)。我的问题看起来很简单,但我不确定是否可能以及如何去做。基本上,我想更改选择的项目,然后仅显示该特定 field 的事件。事件列表从所有 field 开始,但我想更改选择框,然后仅显示该 field 的事件。这是我的一些代码。

app.js

发送到路线并由index.pug渲染的newEventList和venueList数组

index.pug(事件列表)

ul#grid
  each event in newEventList
    li
      div.event
        h4.eventTitle= event.name
        h6.eventDesc= event.venue
        h6.eventStart= event.startTime

index.pug( field 选择框)

  .styled-select#VenueSelect
      select
        each venue in VenueList
          option(value=(venue.name)) #{venue.name}

我可以过滤 pug 代码中的事件吗?还是需要在 app.js 文件中进行过滤并将其重新发送回模板?任何建议都非常收到。谢谢

最佳答案

我认为你有正确的直觉:前端和后端需要一些动态代码。您有几个选项,但所有选项都涉及一些异步通信(例如 AJAX 调用或页面重定向)。我将在下面列出我认为最直接的两个:

1) 您可以让 field 选择事件触发对服务器端点的调用。该调用可以沿着选定的地点传递,然后端点可以返回在该地点发生的事件的列表。一旦前端(客户端)收到此调用的响应,一些前端代码将需要将该列表呈现到浏览器中。该代码将在浏览器中执行,因此不需要 Pug 作为模板框架。 jQuery 是此类 DOM 操作的一个选项,但 MVC 框架可以使此任务变得更容易(如果您有时间学习它们)。

2) 您可以让 field 选择事件触发重定向到附加参数的页面(例如 /index.html?venue=xyz)。该参数可以从服务器上的 app.js 访问并传递给 Pug 模板。然后,Pug 模板可以适本地呈现新页面。这种方法比 1) 有点老式,但也应该有效。

关于javascript - Jade Pug 每次迭代都通过选择框选择进行更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47964046/

相关文章:

javascript - 在nodejs中使用neo4j_driver时如何解决这些问题?

node.js - $elemMatch 不适用于新的 mongodb 2.2 吗?

javascript - JS日期转换

javascript - Google 翻译 Javascript 生成的内容

javascript - 使用 Firebug 或其他工具查找导致某些操作的 Javascript 文件和行号

node.js - 使用 node-solr 进行分面搜索

node.js - 将 wav 编码为 flac 并通过 node.js 进行流式传输

javascript - sails.js 在创建之前修改模型

javascript - 由于没有从 express-serve-static-core 导出 ParsedQs,构建失败

javascript - 如何从另一个函数调用 Express 函数?