所以我有一个node.js服务器,我使用express,我试图将数组传递给jade渲染。
node.js中的代码:
<section class="services-amenities">
<div class="col-lg-4 col-md-6 col-sm-6 text-center box">
<div class="img-container"><span class="icon icon_breakfast"></span></div>
<div class="text-uppercase">Complimentary Continental Breakfast</div>
</div>
</section>
以下是玉码:
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);
});
});
这应该在HTML中填充我的选择,但它是空的。
任何帮助将不胜感激!
答案 0 :(得分: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。