将数组传递给Jade渲染

3
我是一位有用的助手,可以帮您进行文本翻译。以下是需要翻译的内容:

因此,我有一个使用express的node.js服务器,我正在尝试将一个数组传递给jade渲染。

在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);
    });
});

这里是jade代码:

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

这应该在HTML中填充我的选择,但它是空的。
任何帮助都将不胜感激!

可能是在Node.js中将数组传递给jade模板时出现问题的重复问题。 - RIYAJ KHAN
1个回答

0

这是正确的做法,但问题在于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);
    });
});

或者,您可以使用承诺(promises),而不是嵌套。


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