首页 > 解决方案 > Express/EJS - 如果它是渲染的特定视图文件,则执行某些操作

问题描述

我的看法是:

/views/signup.html

我想根据加载的视图在主布局模板中的页面上有不同的元素。

在我的主布局文件中,当呈现该特定视图时,我想要执行以下操作:

  <% if (ecomHeader) { %>
    <% include includes/signup-nav.html %>
  <% } %>
  <% else { %>
    <% include includes/nav.html %>
  <% } %>

这显然行不通

ReferenceError: ../views/layout.html:9
    7| </head>

    8| <body>

 >> 9|   <% if (ecomHeader) { %>

    10|     <% include includes/signup-nav.html %>

    11|   <% } else { %>

    12|     <% include includes/nav.html %>

你能做到吗?是这样的吗?

渲染代码:

...
let token = createCSRFToken(req);
let ecomHeader = true;
res.render('premium/signup', {
  message: req.flash('signupMessage'),
  token: token,
  ecomHeader: true
});
...

有出口。包装这个的东西,不确定这是否相关

标签: node.jsexpressejs

解决方案


你的其他条件是缺少某些东西。确保您将 signup: true/false boolean 从后端传递到您的视图。

res.render("main-template", {
    signup: true/false
});

然后在您的 html 中,您需要执行此操作 - 确保使用<%-.

<% if(signup){ %>
   <%- include('includes/signup-nav.html'); %>
 <% } else { %>  
   <%- include('includes/nav.html'); %>
<% } %>

推荐阅读