Javascript 特快专递及;jade(node.js)-检查是否存在时未定义变量错误
我在一个非常简单的express应用程序上遇到了一个相当愚蠢的错误。我使用jade作为视图引擎,我这样说只是为了防止它与问题相关 我试图检查是否定义了一个变量以呈现一件事或另一件事,但简单地检查该变量会触发“变量未定义”错误。这不是我期望的行为,所以我想知道我是否做错了什么。这是我正在使用的视图代码:Javascript 特快专递及;jade(node.js)-检查是否存在时未定义变量错误,javascript,node.js,view,pug,Javascript,Node.js,View,Pug,我在一个非常简单的express应用程序上遇到了一个相当愚蠢的错误。我使用jade作为视图引擎,我这样说只是为了防止它与问题相关 我试图检查是否定义了一个变量以呈现一件事或另一件事,但简单地检查该变量会触发“变量未定义”错误。这不是我期望的行为,所以我想知道我是否做错了什么。这是我正在使用的视图代码: h1= title - if (user) p Welcome to #{title}, #{user.username} - else p Welcome to #{title
h1= title
- if (user)
p Welcome to #{title}, #{user.username}
- else
p Welcome to #{title}
正确的方法是什么?必须有一种方法来检查视图上的变量:-/
编辑:忘了说错误是在哪一行触发的,它是在第二行“-if(user)”触发的。您没有附上p欢迎来到#{title}#{user.username}
加引号
试一试
正如Jade文档的另一部分所提到的,
locals
变量是如何将数据传递给Jade模板的。在百灵鸟中,我在jade模板中用locals
预先添加了变量。这正确地绕过了错误
因此,以下Jade模板应该可以解决您的错误:
h1= title
- if (locals.user)
p Welcome to #{title}, #{user.username}
- else
p Welcome to #{title}
杰德
# the following function is a safe getter/setter for locals
- function pagevar(key, value) { var undef; return (value===undef) ? locals[key] || null : locals[key] = value; }
block config
#intended as a non-rendered block so that locals can be overridden.
# put your defaults here... - use append in the child view
!!!
html
head
title=pagevar('title')
meta(name='description',content=pagevar('description'))
...
杰德
append config
- locals.title = 'override';
- locals.description = 'override 2';
- pagevars('somekey', 'some value');
...
轻松愉快。这确实有效,谢谢!。尽管如此,我仍然认为简单的检查应该有效,它更干净:-(。
append config
- locals.title = 'override';
- locals.description = 'override 2';
- pagevars('somekey', 'some value');
...