所以我有一个 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/