在 Jade 视图中使用 javascript 代码 - if(variable) 显示未定义而不是传递
所以这是一个反复出现的问题,我没有找到另一个例子,所以这里是:
渲染 Jade 模板时,即使使用 -if(variableName)<,我也会得到
'variableName' undefined
/code> 在模板中。
示例(我将其用作“info”闪存消息的一部分):
-if(info)
- if(info.length){
ul
-info.forEach(function(info){
li= info
-})
-}
这将返回“info”未定义,而不是在没有闪存/信息消息时不渲染任何内容。有谁知道我做错了什么?
我知道如上所述的 typeof(variable) != 'undefined
选项。如果我想做类似 -if (typeof(req.session.user) != 'undefined')
的事情,我就必须做 3 个嵌套的 `if (typeof(req) != 'undefined'这是我唯一的选择吗?
So this is a recurring issue I have and haven't found another example on SO so here goes:
When rendering Jade templates I get 'variableName' undefined
even when using -if(variableName)
in the template.
Example (I'm using this as a partial for 'info' flash messages):
-if(info)
- if(info.length){
ul
-info.forEach(function(info){
li= info
-})
-}
This returns 'info' is not defined instead of not rendering anything when there isn't a flash/info message. Does anyone know what I'm doing wrong?
I'm aware of the typeof(variable) != 'undefined
option as mentioned. If I wanted to do something like -if (typeof(req.session.user) != 'undefined')
I would have to do 3 nested `if (typeof(req) != 'undefined'. Is this my only option?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
尝试
if(typeof info !== "undefined")
。我不太确定,但我认为他们使用
with
将变量注入到您的视图范围中。try
if(typeof info !== "undefined")
.I'm not too sure but I think they use
with
to inject variables into the scope of your view.是的,大多数模板引擎将整个编译的模板函数包装在 with 语句中。可以通过在解析模板时考虑变量来做到这一点,但我认为几乎所有模板引擎都使用 with()。
一种解决方案是在渲染该模板时始终确保“信息”始终位于局部对象中。您可以通过显式将 info 设置为 undefined 或任何其他错误值来做到这一点。
Yes, most templating engines wrap the entire compiled template function in a with statement. It is possible to do otherwise by taking the variables into account when parsing the template, but I think nearly all templating engines use with().
One solution would be to always make sure "info" is always in the locals object when rendering that template. You could do this by explicitly setting info to undefined or any other falsey value.
只需指定变量值 IF 变量未定义:
simply specify the variable value IF variable undefined:
而不是:
使用:
由于“命名空间”将始终存在,并且您可以引用 Object.key 而不会出现“未定义”错误,因此这对您来说会更好。
-杰夫
instead of:
use:
Since "namespace" will always exist, and you can reference Object.key without the "undefined" error, this will work better for you.
-jeff