判断ejs中是否有变量

时间:2014-12-10 07:28:01

标签: node.js ejs

这是我的申请:

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>
<%
     }
%>

我收到错误说:

未定义数据

我想检查变量是否存在,如果存在则显示对话框。我该怎么办?

1 个答案:

答案 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,但默认情况下它只是未定义的