【问题标题】:Passing an array to jade file将数组传递给玉文件
【发布时间】:2013-01-03 12:22:26
【问题描述】:

这是我的问题:

我的 express 代码中某处有这个渲染函数:

    function renderWithData(arrayOfEvents, res) {
    res.render("index", {
        locals: {
            pageTitle: "Wochenplaner",
            events: arrayOfEvents
        }
    });
}

它向 index.jade 传递一个名为 events 的变量。 现在我想在jade中解析这个变量,例如这样:

- if(locals.events[0] == true) alert("Bla");

但是 express 告诉我 locals.events 是未定义的。 我如何正确地将变量传递给那种“rendering-javascript”?

【问题讨论】:

  • 你试过- if (events[0] ...吗?
  • 是的,这显然不起作用,因为 events 是 locals 对象的属性。所以它告诉我“未定义事件”我也试过这个: if(locals.events[i].time === i+7 && locals.events[i].day === 0) 也不起作用,然后它告诉我时间和日期没有定义。但是事件中肯定有数据,因为当我在 html 文件中打印 #{locals.events[0].day} 时,有需要的数据!
  • 啊,我明白了。好吧,首先,我认为您不需要 locals 对象,但这是个人喜好问题。其次,它可能是arrayOfEvents 没有被通过,或者是undefined
  • 您使用的是 express 3 吗?如果是这样,您不应该将这样的本地人传递给.render。就做.render("index", { events: arrayOfEvents })

标签: javascript node.js express pug


【解决方案1】:

好吧,我是菜鸟!

在我的实现中,这个 if-construct 是这样循环的:

for(var i = 0; i < number; i++) {
if(locals.events[i].time == 7) alert("bla");
}

我没有考虑的是,locals.events[i].time 可能是“未定义的”,因为该数组中的该索引处根本没有日期。 所以我通过添加以下内容来解决这个问题:

if(typeof locals.events[i].time !== "undefined" && locals.events[i].time == 7) alert("bla");

从节点代码访问js变量并将其传递给jade的正确方法是通过对象访问它。如果这是我的对象:

locals: {
        pageTitle: "Wochenplaner",
        events: arrayOfEvents
    }

然后我会像这样在 Jade 中访问它:

locals.events[index].property

抱歉浪费您的时间:)

【讨论】:

    猜你喜欢
    • 2016-11-15
    • 2012-10-09
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 2015-08-24
    • 2013-09-05
    • 2018-03-24
    • 2020-08-05
    相关资源
    最近更新 更多