【问题标题】:Loop through javascript array to build an HTML table with jade循环遍历javascript数组用jade构建HTML表格
【发布时间】:2015-02-13 16:16:33
【问题描述】:

我正在尝试像这张图片一样呈现一个 HTML 表格(带有玉石):

数据格式如下:

var menus = [
    {
        day: "Lundi",
        items: [
            { name: "item 1", price: 6.50 },
            { name: "item 2", price: 7 },
            { name: "item 3", price: 6.50 }
        ]
    },
    {
        day: "Mardi",
        items: [
            { name: "item 1", price: 6.5 },
            { name: "item 2", price: 7 }
        ]
    },
    {
        day: "Mercredi",
        items: [
            { name: "item 1", price: 6.5 },
            { name: "item 2", price: 7 },
            { name: "item 3", price: 6.5 }
        ]
    },
    {
        day: "Jeudi",
        items: [
            { name: "item 1", price: 6.5 },
            { name: "item 2", price: 7 },
            { name: "item 3", price: 6.5 }
        ]
    },
    {
        day: "Vendredi",
        items: [
            { name: "item 1", price: 6.5 },
            { name: "item 2", price: 7 }
        ]
    }
];

这是我现在拥有的:

    table
    thead
        tr
            each menu in menus
                th= menu.day
    tbody
        // what kind of magic loop should I use here to go through menus' items ?

因此,如您所见,我正在努力循环浏览每个菜单项。 我需要以其他方式格式化menus 数组吗?

【问题讨论】:

    标签: javascript loops express pug html-table


    【解决方案1】:

    你可以像下面的代码那样做,或者你可以在传递给模板之前在你的路由中格式化 json,以便更容易循环...用下面的代码做,你会遇到问题当您点击未定义项目的 td 时,您需要进行错误检查以确保存在菜单项。

        thead
                tr
                    each menu in menus
                        th= menu.day
                tbody
                    tr
                        each menu in menus
                            td= menu.items[0].name 
                    tr
                        each menu in menus
                            td= menu.items[1].name 
                    tr
                        each menu in menus
                            if (menu.items[2])
                                td= menu.items[2].name
                            else 
                                td= ""
    

    【讨论】:

    • 您的解决方案的问题是我无法控制需要多少行。我想知道在路线中重新格式化菜单是否是个好主意。因为我可能需要在其他地方使用这些数据,但方式不同。
    • @inwpitrust 不要全局修改路由中的数据,只需修改它以发送到此特定模板。或者你可以根据菜单的长度将它放在另一个循环中
    • 要将重新格式化的数据传递给模板,我需要在路由中进行吗?我还不熟悉 express/jade 中的模板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 2016-06-20
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 2013-08-16
    相关资源
    最近更新 更多