如何在EJS中使变量可选? [重复]

问题描述 投票:0回答:1

在模板中,我有一个变量,我想显示其值,但我希望它是可选的。

这是我所拥有的:

<h1>Title</h1>
<%= message %>

然后我用:

app.render("page.ejs"); 

但有时我会用:

app.render("page.ejs", {message: "test"});

我有时会得到这个:

ReferenceError: /views/login.ejs:4
    2| <h1>Title</h1>
 >> 3|    <%- message %>

message is not defined

这是我的错误吗?

我都尝试过:

<%- message %>
<%= message %>
<%= if (message) message %>  // SyntaxError: Unexpected token 'if' in 

更新
链接的问题给出了一些答案。要消除此错误,请执行以下操作:

 <%= locals.message %>

或者

 <%= locals?.message %>

这也可能有效:

 <%- locals?.message %>
node.js ejs
1个回答
-1
投票

你很幸运,EJS 允许你编写条件和循环!

目前,根据您收到的错误,您的消息变量尚未定义,因此请确保其定义正确。

显然,如果像您的情况一样,您想要条件显示,则可以使用 EJS 的本机功能。

所以,你可以使用它:

<% if (locals?.message) { %>
    <h1>Title</h1>
    <%= message %>
<% } else { %>
    <h1>Title</h1>
    No message for you...
<% } %>

如果您愿意,我想您这里有示例:https://ejs.co/#docs

否则,变量将显示为等号。 (

<%= message %>
而不是
<%- message %>

您的所有数据都可以作为变量(如果有)以及通过始终存在的

locals
对象进行访问。

© www.soinside.com 2019 - 2024. All rights reserved.