簡體   English   中英

將數組傳遞給玉渲染

[英]Passing an array to jade rendering

所以我有一個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);
    });
});

這里是玉代碼:

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代替嵌套。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM