res.render选项参数错误

时间:2014-02-28 10:23:17

标签: node.js parameters express pug

我正在使用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传递的变量用于脚本?

2 个答案:

答案 0 :(得分:2)

让我们花点时间看看你的玉。我们将通过替换变量将其转换为HTML。

alert(false);
alert(notTrueOrFalse);

alert(false)有效,因为它被视为布尔值。但是没有引号notTrueOrFalse被视为变量。所以未定义的变量错误。

尝试

alert("#{myvar2}")

答案 1 :(得分:1)

alert(#{myvar2})

将发送给客户:

alert(notTrueOrFalse);

由于它应该是字符串而不是变量,因此失败。解决方案应该用引号括起来:

alert("#{myvar2}")