Express & jade (node.js) - 检查是否存在时,变量未定义错误
Express & jade (node.js) - variable is not defined error when checking for existence
我在一个非常简单的快速应用程序上遇到了一个非常愚蠢的错误。我正在使用 jade 作为视图引擎,我这么说是为了以防万一它与问题有关。
我正在尝试检查是否定义了变量以呈现一件事或另一件事,但只需检查该变量就会触发"未定义变量"错误。这不是我所期望的行为,所以我想知道我是否做错了什么。这是我正在使用的视图代码:
h1= title
- if (user)
p Welcome to #{title}, #{user.username}
- else
p Welcome to #{title}
正确的方法是什么?必须有一种方法可以检查视图上的变量。:-/
编辑:忘了说错误是在哪一行触发的,它是在第二行"- if(用户)"上触发的。
正如在另一个答案中提到的,Jade 文档的公共 API 部分说locals
变量是将数据传递到 Jade 模板的方式。在云雀上,我在玉石模板中用 locals
预置了我的变量。这正确地绕过了错误。
因此,以下Jade模板应该可以解决您的错误:
h1= title
- if (locals.user)
p Welcome to #{title}, #{user.username}
- else
p Welcome to #{title}
您没有将
p Welcome to #{title}; #{user.username}
括在引号中
尝试
if(typeof obj != 'undefined')
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'))
...
页面.翡翠
append config
- locals.title = 'override';
- locals.description = 'override 2';
- pagevars('somekey', 'some value');
...
容易吃豆。
相关文章:
- 用于检查数组中是否存在元素的javascript自定义方法
- 是否存在React Native“;WEB代码安全防护”;
- 验证会话中是否存在对象's数组
- 如何查找值是否存在于二叉树中
- 检查是否存在使用chrome扩展的javascript库
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 测试mongo脚本中是否存在参数
- 检查搜索结果是否存在多次如果是,则在Javascript中只显示一个结果
- 使用js/jQuery检查对象(而不是元素)是否真的存在
- 检查数组中是否存在字符串值,并返回找到的数组值js
- 如何通过json对象选项卡中的Id来检查对象是否存在
- 检查是否存在任意控制器/操作
- 如何检查一个字符串的所有字符是否都存在于另一个字符串中
- Javascript滑块不滑动,如何判断是否存在JS冲突
- 根据手机上是否存在文件,在jQuery mobile中动态填充列表视图
- javascript测试是否存在两个标志中的任何一个
- 如何使用javascript检查移动sd卡中是否存在文件
- 当提供函数名称时,检查函数是否存在于同一作用域中
- 需要帮助使用JQuery.inArray()检查值是否存在
- 在运行Javascript/jQuery中的函数之前,检查元素是否存在是否更具性能