0

我试图为 Expressjs 中的应用程序做一个简单的菜单。我希望将“活动”类设置为您当前正在访问的页面的菜单列表项...我在 Express.js 中有一个 Jade 视图文件,其中包含以下代码:

li(class = path === "/id/admin" ? "active" : "")
  a(href='/id/admin', title='admin') Admin
li(class = path === "/id/admin/services" ? "active" : "")
  a(href='/id/admin/services', title='services') Services
li(class = path === "/id/admin/staff" ? "active" : "")
  a(href='/id/admin/staff', title='staff') Staff

这是行不通的,因为 slug 的“id”部分应该是动态的,这取决于登录的客户端。另一个问题是某些 slug,如“/id/admin/staff”,可能最后包含额外的 slug,例如:“/id/admin/staff/new”或“/id/admin/staff/staff-id/edit”。

我在想我需要某种正则表达式来匹配蛞蝓的特定部分。比如:如果 slug 在某处包含短语“/services”,则在菜单中激活该列表项。但我不知道我是如何写这个并融入 Jade 的观点的。

你能帮我吗?

4

1 回答 1

0

如果您只是想做一个简单的正则表达式来验证路径的一部分,那么一个非常基本的就是

li(class = path.match(/^\/id\/admin$/) ? "active" : "") //string has to end with "admin"
  a(href='/id/admin', title='admin') Admin
li(class = path.match(/^\id\/admin\/services/) ? "active" : "")
  a(href='/id/admin/services', title='services') Services
li(class = path.match(/^\/id\/admin\/staff/) ? "active" : "")
  a(href='/id/admin/staff', title='staff') Staff

这将与管理员完全匹配,然后其他两个将简单地在路径字符串的开头查找这些模式。

这也是假设您将路径从 Express 传递到 Jade 模板进行渲染。

于 2013-09-09T09:45:32.997 回答