【问题标题】:Node js loop in res.renderres.render 中的节点 js 循环
【发布时间】:2017-06-27 08:56:18
【问题描述】:

大家好,我有一个路由器,它基本上拉入一个 JSON 文件并输出数组的各种实例。当我在我的 for 循环中 console.log 标题时,它会循环并输出并输出每个实例,效果很好。当我将 res.render 放在 for 循环中并将其传递给在 console.log 中循环的相同变量时,它只会输出第一个实例。有人知道为什么吗?有没有办法遍历 res.render 以输出与 console.log 相同的 JSON 中的所有实例。

感谢您的宝贵时间,

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  
});

【问题讨论】:

    标签: json node.js express


    【解决方案1】:

    res.render 所做的基本上是提供一个插入了一些模板的纯 HTML 文件,因此使用像传递给渲染调用的对象这样的数据。因此,res.render 就像 return 语句一样,当您的代码到达该标记时,它会向路由器发出信号,我们需要呈现此页面(在浏览器中呈现给用户),因此我们必须完成我们的路由器处理逻辑。

    至于是否可以“循环”渲染调用,答案是否定的,因为这意味着即使成功,也可以一个接一个地立即呈现您想要的许多页面,所以从这个角度来看,您真的不想继续进行渲染调用,因为您在浏览器中的视图会有效地保持刷新。

    使用render 执行此操作的一种方法是将您的类似数组的数据打包到您传递给res.render 的对象中,然后假设您使用某种模板引擎,做一些类似于'for在那里循环,循环和打印元素,比如 HTML div。

    希望这有点帮助。

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      相关资源
      最近更新 更多