【问题标题】:How to place an EJS tag within another如何将 EJS 标签放在另一个标签中
【发布时间】:2017-03-11 03:34:20
【问题描述】:

我使用 EJS 作为我的模板引擎。我正在将变量从节点 js 传递给 ejs,例如...

router.get("/AdminDatabase", function(req, res) {
    res.render('Pages/AdminDatabase', {title: 'WebFormsAdmin', role: 'System Admin' });
  });

我正在构建一个基于角色的控件,为此我想根据用户的角色更改页面的标题。

<% include ../partials/Common/header_<%= role %> %>

问题在于上述部分。如何将变量 role 放置在此 EJS 代码段中?

我的头文件是

header_System Admin.ejs,

header_Survey Admin.ejs,

header_Survey Taker.ejs

【问题讨论】:

标签: node.js express ejs


【解决方案1】:

一种解决方法是像这样进行条件渲染:

<% switch (role) {
  case 'System Admin': %>
    <% include ./partials/header_System_Admin %>
    <% break; %>
  <% case 'Survey Admin': %>
    <% include ./partials/header_Survey_Admin %>
    <% break; %>
  <% default: %>
    <% include ./partials/header_Survey_Taker %>
    <% break; %>
<% } %>

请注意,第一种情况必须与 switch 声明组合在一起。确保您的部分路径正确。

【讨论】:

  • 如上所述,我正在从节点 js 传递角色。我怎么能把它包括在这里?是这样的吗?? ){
  • @K.Kabilesh role 变量正是 switch 语句中正在评估的内容。你不必渲染它。
  • 例如,我将其作为角色展示:“系统管理员”。但我是从 cookie 传递角色的。角色:req.cookies.role...在用户登录时动态确定
  • 在您的原始帖子中,您表明 role 是从路由传入的。这就是您将如何处理以这种方式传递到模板中的变量。无论如何,您应该在服务器端确定授权级别。
  • 你能帮我解决这个问题吗?与ejs相关stackoverflow.com/questions/42734396/…
【解决方案2】:

您可以连接路径和变量。

<%- include('../partials/Common/header_'+role) %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 2013-04-23
    相关资源
    最近更新 更多