在res.render中发送JavaScript变量 - express

3
我正在尝试构建一个小应用程序,从包含JSON的config.js文件中调用数据,并根据JSON中的name键将数据写入页面。
app.get('/:verb', function(req, res) {

    if(!!req.param.verb) {
       config.data.forEach(function(o) {
           var verbName    = o.name,
               description = o.description;

       });

    };
res.render('verb', {title: verbName, subtitle: description});
});

我试图做的是在res.render结构中使用verbNamedescription javascript变量作为Jade变量。目前,由于verbNamedescription不是字符串,所以此代码将失败。
是否可能以这种方式包含变量?
PS-我已经使用express 1周和Jade 2天,因此所有想法/解决方案都将不胜感激。

我不确定我理解你的问题。你说的“这段代码将失败”是什么意思?你是否收到了错误消息?如果是这样,请发布一下。完全可以将变量传递给Jade视图。它们将在locals对象中可用于Jade。因此,您应该能够通过执行locals["title"]locals["subtitle"]来访问它们。 - Waldo Jeffers
并没有明确的错误信息 - 我从服务器收到500,依赖于这段代码的页面部分无法显示。我将研究locals对象。实质上,我试图使用 var verbName = o.name 来向 title 对象提供数据。我无法使 res.render 接受 title 的变量。如果可以使用 locals 解决这个问题,那就太好了。 - Peachey_A
1个回答

3

你在错误的作用域中声明变量。并且在每次forEach循环执行时都会覆盖它们。

app.get('/:verb', function(req, res) {

    var verbName,
        description;

        if(!!req.param.verb) {
           config.data.forEach(function(o) {
               verbName    = o.name,
               description = o.description;

           });

        };
    res.render('verb', {title: verbName, subtitle: description});
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接