javascript - 将数组传递给 jade 渲染

标签 javascript node.js express pug

所以我有一个 node.js 服务器,我在其中使用 express,我试图将一个数组传递给 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 填充我的选择,但它是空的。

如有任何帮助,我们将不胜感激!

最佳答案

这是正确的做法,但问题是 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 而不是嵌套。

关于javascript - 将数组传递给 jade 渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36593651/

相关文章:

javascript - 如何更新 React.js 中的对象?

jquery - 第二次刷新后 Passportjs 忘记登录用户

windows-7 - 出现错误,错误 : Cannot find module ‘express’ after npm install

javascript - JWT:在到期后一分钟或更短时间内将新 token 传递给客户端。坏主意还是好主意?

javascript - 将 Node.js Express 变量传递给我的静态 javascript 文件

javascript - AngularJS:在没有范围的字符串中编译 Angular 代码

javascript - 如何将多个 HTML 标签添加到一个 div 中

javascript - 自定义 javascript/jquery 不适用于 Angular View

javascript - 计算流的 sha1 哈希值但仍然使用该流?

javascript - Babel 和 typeahead 的问题