我正在使用Node.js,Express和Jade。 我使用res.render和我发送到将要打开的.jade页面的许多参数:
res.render('home', { title: '/home' , css: '/stylesheets/home.css', myvar:'false', myvar2:'notTrueOrFalse'});
进入.jade页面我使用这些值,但是如果我将其中一个用于javascript脚本它不起作用,除了它是一个像“false”或“true”的值。 控制台说:“Uncaught ReferenceError:notTrueOrFalse未定义”为什么?
这是.jade文件:
extends layout
block content
#contenitore
script.
alert(#{myvar}) //THIS WORK
alert(#{myvar2}) //THIS DOESN'T WORK
var valore=checkAutentication(#{myvar}) //THIS WORK
var valore=checkAutentication(#{myvar2}) //THIS DOESN'T WORK
alert(#{title}) //THIS DOESN'T WORK
#titolo
p #{title} //OUT OF THE SCRIPT THIS WORK
对于“title”变量,控制台说:“Uncaught SyntaxError:无效的正则表达式:缺少/”
有什么问题?为什么我不能将使用res.render传递的变量用于脚本?
答案 0 :(得分:2)
让我们花点时间看看你的玉。我们将通过替换变量将其转换为HTML。
alert(false);
alert(notTrueOrFalse);
alert(false)
有效,因为它被视为布尔值。但是没有引号notTrueOrFalse
被视为变量。所以未定义的变量错误。
尝试
alert("#{myvar2}")
答案 1 :(得分:1)
alert(#{myvar2})
将发送给客户:
alert(notTrueOrFalse);
由于它应该是字符串而不是变量,因此失败。解决方案应该用引号括起来:
alert("#{myvar2}")