【问题标题】:Passing an array to jade rendering将数组传递给翡翠渲染
【发布时间】:2016-08-04 06:27:08
【问题描述】:

所以我有一个使用 express 的 node.js 服务器,我试图将一个数组传递给玉渲染。

node.js 中的代码:

router.get('/render', function(req, res) {
    var t;
    var combo = {'items': []};

    fs.readFile('ek.txt', function(err, data){
        if(err) {
            return console.error("Error: " + err);
        }

        t = data.toString();

        combo.items = t.split(" ");
        combo.items.pop(); //delete last element which is \r\n
        console.log(combo.items);
    });

    res.render('register', {'items': combo.items}, function(err, html) {
        if(err)
            console.log(err);
        else
            res.send(html);
    });
});

这是玉码:

select
    -console.log(items); 
    each item in items
      option= item

这应该在 HTML 中填充我的选择,但它是空的。

任何帮助将不胜感激!

【问题讨论】:

标签: javascript node.js express pug


【解决方案1】:

这是正确的做法,但问题是fs.readFile 是异步的。所以发生的事情是你渲染了一个空数组(因为文件还没有被读取)。

可能的解决方案:

fs.readFile('ek.txt', function(err, data){
    if(err) {
        return console.error("Error: " + err);
    }

    t = data.toString();

    combo.items = t.split(" ");
    combo.items.pop(); //delete last element which is \r\n
    console.log(combo.items);

    res.render('register', {'items': combo.items}, function(err, html) {
        if(err)
            console.log(err);
        else
            res.send(html);
    });
});

或者你可以使用promise代替嵌套。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多