【问题标题】:How to use template in the loop statement in EJS?如何在 EJS 的循环语句中使用模板?
【发布时间】:2020-05-01 22:56:06
【问题描述】:

我正在制作一个基于 Express 的 Node JS 项目,它使用 EJS 循环在给定的一组数组中打印出一个特定的元素数组。

app.get("/:animal", function(req,res) {
var animal = req.params.animal;
var cats = [
    { name : "Mittens", age : 7},
    { name : "Kitty", age : 11},
    { name : "Smoogy", age : 3}
];
var dogs = [
    { name : "Rusty", age : 14},
    { name : "Matt" , agee : 7},
    { name : "Holly" , age : 9}
]

res.render("abc.ejs", {animal : animal, cats : cats, dogs : dogs});

这是我的 2 个数组,我必须根据动物参数的值打印出其中的任何一个。我想这样做,而不是在 EJS 文件中分别为猫和狗编写 forEach 循环,而是想根据动物参数的值进行打印。怎么做? 我尝试使用嵌套的 标签但没有用

【问题讨论】:

    标签: node.js express ejs backend visual-web-developer


    【解决方案1】:

    我建议使用 javascript 中的对象来处理您的情况,如下所述

    在你的路由文件中,不需要扩展名 ejs

    router.get('/:animal', function(req, res) {
    	var animal = req.params.animal;
    	var cats = [ { name: 'Mittens', age: 7 }, { name: 'Kitty', age: 11 }, { name: 'Smoogy', age: 3 } ];
    	var dogs = [ { name: 'Rusty', age: 14 }, { name: 'Matt', agee: 7 }, { name: 'Holly', age: 9 } ];
    
    	var map = { cats: cats, dogs: dogs };
    
    	res.render('abc', { animals: map[animal] });
    });

    Ejs 查看文件如下:

    <table>
        <tbody>
    <% animals.forEach(function(animal) { %>
        <tr>
          <td><%= animal.name %></td>
          <td><%= animal.age %></td> 
        </tr>
      <% }); %> 
    </tbody>
    </table>

    然后点击端点,可以根据您的端口和主机进行更改 http://localhost:3000/dogs

    http://localhost:3000/cats

    【讨论】:

      【解决方案2】:

      将两个数组合并为一个大数组

      var animals=cats.push(...dogs)
      res.render("abc.ejs", {animal , animals });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-02
        • 2023-03-21
        • 2019-04-27
        • 1970-01-01
        • 2017-05-03
        • 1970-01-01
        • 2012-01-03
        相关资源
        最近更新 更多