在模板中,我有一个变量,我想显示其值,但我希望它是可选的。
这是我所拥有的:
<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 %>
你很幸运,EJS 允许你编写条件和循环!
目前,根据您收到的错误,您的消息变量尚未定义,因此请确保其定义正确。
显然,如果像您的情况一样,您想要条件显示,则可以使用 EJS 的本机功能。
所以,你可以使用它:
<% if (locals?.message) { %>
<h1>Title</h1>
<%= message %>
<% } else { %>
<h1>Title</h1>
No message for you...
<% } %>
如果您愿意,我想您这里有示例:https://ejs.co/#docs
否则,变量将显示为等号。 (
<%= message %>
而不是<%- message %>
)
您的所有数据都可以作为变量(如果有)以及通过始终存在的
locals
对象进行访问。