我在一个非常简单的快递应用上遇到了一个非常愚蠢的错误。我使用jade作为视图引擎,我这样说是为了防止它与问题有关。
我正在尝试检查变量是否已定义以呈现一个或另一个,但只是检查该变量会触发“变量未定义”错误。这不是我期望的行为,所以我想知道我做错了什么。这是我正在使用的视图代码:
h1= title
- if (user)
p Welcome to #{title}, #{user.username}
- else
p Welcome to #{title}
这样做的正确方法是什么?必须有一种方法来检查视图上的变量。 : - /
编辑:忘记说错误被触发到哪一行,它在第二行“ - if(user)”上被触发。
答案 0 :(得分:13)
正如另一个answer中提到的,Jade文档的Public API部分说locals
变量是数据传递给Jade模板的方式。在云雀上,我使用locals
将我的变量添加到玉石模板中。这正确地绕过了错误。
因此,以下Jade模板应解决您的错误:
h1= title
- if (locals.user)
p Welcome to #{title}, #{user.username}
- else
p Welcome to #{title}
答案 1 :(得分:3)
您没有将 p Welcome to #{title}; #{user.username}
括在引号
尝试
if(typeof obj != 'undefined')
答案 2 :(得分:1)
layout.jade
# 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'))
...
page.jade
append config
- locals.title = 'override';
- locals.description = 'override 2';
- pagevars('somekey', 'some value');
...
容易豌豆。