4

我在一个非常简单的快递应用程序上遇到了一个非常愚蠢的错误。我使用翡翠作为视图引擎,我这样说是为了以防它与问题有关。

我正在尝试检查是否定义了变量以呈现一件事或另一件事,但简单地检查该变量会触发“未定义变量”错误。这不是我所期望的行为,所以我想知道我是否做错了什么。这是我正在使用的视图代码:

h1= title
- if (user)
    p Welcome to #{title}, #{user.username}
- else 
    p Welcome to #{title}

这样做的正确方法是什么?必须有一种方法来检查视图上的变量。:-/

编辑:忘了说错误是在哪一行触发的,它是在第二行“- if (user)”上触发的。

4

3 回答 3

13

正如另一个答案中提到的,Jade 文档的公共 API部分说该locals变量是数据传递给 Jade 模板的方式。在云雀中,我在翡翠模板中添加了我的变量locals。这正确地绕过了错误。

因此,以下 Jade 模板应该可以解决您的错误:

h1= title
- if (locals.user)
    p Welcome to #{title}, #{user.username}
- else 
    p Welcome to #{title}
于 2012-09-03T19:57:24.387 回答
3

你没有p Welcome to #{title}; #{user.username}用引号括起来

尝试

if(typeof obj != 'undefined')
于 2012-05-22T20:19:01.260 回答
1

布局.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');
...

轻松豌豆。

于 2013-05-14T23:06:51.543 回答