【问题标题】:Routing with parameters in jade from one page to another使用jade中的参数从一个页面路由到另一个页面
【发布时间】:2019-06-14 07:38:41
【问题描述】:

由于我是 nodejs 和 express 的新手,我需要一些帮助来解决我的问题。我在 track.jade 页面上有 table(jade),其中包含信息,“ID”链接到另一个页面。成功我可以路由到另一个页面。但我需要将“track.jade”表中的参数传递到表中的另一个页面。

我怎样才能做到这一点?因为我找不到任何可以确定这个问题的文章。

    mixin session(AWB_NO, Product_Name, PCS, Weight, Gross_Weight, DOP, DOE)
tr
td.session(data-sort-value="#{session_name}")
.flex.sm
div
a.name(href="/track/dist.jade") #{AWB_NO}
div
td.min(data-label="Name") #{Product_Name}
td.min(data-label="file") #{PCS}
td.min(data-label="s_name") #{Weight}
td.min(data-label="r_name") #{Gross_Weight}
td.min(data-label="Date") #{DOP}
td.min(data-label="Date") #{DOE}
td.remove
a.btn-remove
img(src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/5102/remove.svg", alt="Remove Session")
span Remove 
.container
.event-registration.reset
.content.wide
.row-inset
table.table-default.table-striped.table-bordered.sortable
thead(data-header="true")
tr
th(data-sort-column="true") AWB NO
th(data-sort-column="true") Product Name
th(data-sort-column="true") PCS
th(data-sort-column="true") Weight
th(data-sort-column="true") Gross Weight
th(data-sort-column="true") Date of Packing
th(data-sort-column="true") Date of Expiry
// th(data-sort-column="true") DOR
th
tbody(data-body="true")
+session("16783","Tuna Super","10","12,6","13","03/28/2017","04/28/2017")
+session("17670936423","Fresh Sword Fish","1","12,8","13,6","03/28/2017","04/28/2017")
+session("178529","Fresh Fish","8","10","11","03/28/2017","04/28/2017")
+session("16254","Baramundi","5","11","12","03/28/2017","04/28/2017")

我曾尝试使用 url localhost:3000/track/dist.jade 从一个页面路由到另一个页面

【问题讨论】:

  • 需要一些代码才能更好地理解您的问题
  • @StephenS 感谢您的回复,请检查我用代码编辑的主要答案。这里 "a.name(href="/track/dist.jade") #{AWB_NO}" 我正在尝试路由,但它会路由到下一页。在我如何将值从 track.jade 传递到下一页之后。
  • AFAIK 你不能简单地路由到一个玉文件。您需要使用快速路由器创建路由并在您的翡翠文件中使用这些 url。您可以查看documentation 以使用 express 模板引擎。
  • 我在路由文件夹中有 dist.js,它实际上将我路由到下一页。路由页面后,我需要与值一起路由。

标签: node.js express pug


【解决方案1】:

您需要将href值更改为快速路由器中设置的路由。然后可以在 dist 路由中接收该参数作为请求参数。

track.jade

a.name(href="/dist/" + AWB_NO ) #{AWB_NO}

dist.js

router.get('/dist/:awb', ensureLoggedIn, utils.checkAdmin, function (req, res, next) {
    res.render('dist',{
        AWB_NO: req.params.awb
    })    
});

【讨论】:

  • 谢谢斯蒂芬,这对我帮助很大!但后来我注意到捕获 id 的 url 但为什么它没有导航到 dist.jade 我还需要将这个“awb_no”传递给这个表。
  • 您无法导航到翡翠文件,它只是一个模板。一旦模板呈现,它的 html 就会被创建,因此它不能被更改。您可以路由到新页面或使用客户端 JavaScript 通过 AJAX 调用在同一页面中加载某些内容
  • 所以当模板被渲染后,是否无法在此页面“localhost:3000/track/12345”上加载视图,或者我是否需要从“/12345/test”路由来传递值从一页到另一页。就像我在 track.jade id "12345" 中有表,我需要将这些 "12345" 值传递给 dist.jade 表。像这样sapui5.hana.ondemand.com/1.36.15/docs/guide/…
  • 所以我尝试过使用类似这样的ajax,但没有任何效果。客户端:脚本。 $.get("/dest", function(data) { name = data.name; });服务器端 app.get("/dest", function(req, res){ res.json({ name: "example" }); });
  • 您共享的 SAPUI5 链接使用客户端哈希路由,该路由使用一些 javascript 技巧,通常使用框架(Angular、react、vue 或 SAPUI5 之类的东西)完成。这些被称为 SPA(单页应用程序),可让您在同一页面上的内容之间导航,而无需页面重定向。然而,Jade 是服务器端呈现的,如果没有页面重定向,您将无法加载任何内容。因此,要在页面加载后加载内容,您需要客户端 javascript 和 DOM 操作。
猜你喜欢
  • 1970-01-01
  • 2019-04-13
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 2011-01-02
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
相关资源
最近更新 更多