这是我的申请:
index.js
function index(req, res) {
res.render('admin/index');
}
module.exports = index;
index.ejs
<%
if(data) {
%>
<div class="alert alert-danger" role="alert">login fail</div>
<%
}
%>
我收到错误说:
未定义数据
我想检查变量是否存在,如果存在则显示对话框。我该怎么办?
答案 0 :(得分:3)
重写支票如下:
<% if (typeof data !== 'undefined') { %>
...或者检查locals
(局部变量对象)上的属性:
<% if (locals.data) { %>
说明:当EJS将模板编译成函数时,它不会填充其变量&#39;基于提供的options
堆栈。相反,它使用with
语句包装此函数:
with (locals || {}) {
(function() {
// ... here goes the template content
})();
}
现在,数据对象(render
的第二个参数)作为locals
变量传递给模板函数,它针对此对象进行了所有检查。关键是,如果访问somevar
从未在本地模板范围中定义(通过var
语句),并且在locals
对象中也不存在,那么它就是&#l; ll导致ReferenceError: somevar is not defined
错误。
(可以禁用包装,将_with
模板选项设置为false
,但默认情况下它只是未定义的