嘿所有人我有一个路由器,基本上拉入一个JSON文件并输出该阵列的各种实例。当我在我的for循环中使用console.log标题循环并输出并输出每个实例时,效果很好。当我把我的res.render放在for循环中并传递给它时,在console.log中循环的同一个变量只会输出第一个实例。有人知道为什么吗?有没有办法循环res.render输出JSON中与console.log相同的所有实例。
感谢您的时间,
router.get('/fuelTypeFilter', function(req, res, next) {
var url = "Example.JSON"
request({
url: url,
json: true
}, function (error, response, obj) {
if (!error && response.statusCode === 200) {
// console.log(obj) // Print the json response
for(key in obj.categories){
var img = obj.categories[key];
var title = obj.categories[key].product_category_title;
console.log(title);
// console.log(obj.categories[key]);
}
res.render('fuelTypeFilter', { title: 'Fuel Type', item: title });
} //end of if
}); // end of request
});
答案 0 :(得分:0)
res.render
所做的基本上是一个普通的HTML文件,其中插入了一些模板,所以对象数据就像你传递给渲染调用的对象一样。因此,res.render
的行为类似于return
语句,就像您的代码到达该标记时一样,它向路由器发出信号,表示我们需要呈现此页面(在浏览器中显示给用户),因此我们必须完成我们的路由器处理逻辑。
是否可以循环使用'渲染调用,答案是否定的,因为这意味着即使成功,也会一个接一个地出现许多你想要的页面,所以从这个角度来看,你真的不想继续进行渲染调用。您在浏览器中的视图会在一瞬间有效地保持清爽。
使用render
执行此操作的一种方法是将类似数组的数据打包到传递给res.render
的对象中,然后假设您使用某种模板引擎,执行类似的操作到了一个循环'在那里,循环和打印元素,比如HTML divs。
希望这有点帮助。