如何在jade中进行嵌套迭代?

时间:2015-02-19 19:27:53

标签: javascript html node.js express pug

ul
    li
        a(href='') menu1
    li
        a(href='') menu2
        ul
            li
                a(href='') sub-menu2
    li
        a(href='') menu3
        ul
            li
                a(href='') sub-menu3
                ul
                    li
                        a(href='') secondary-submenu3

这是我想要实现的,而不是编写上面的jade代码,我希望能够使用循环生成它。 我尝试了玉器文档,示例只显示了一个级别的循环。例如。我可以试试这个

-var menus = [ 'menu1', 'menu2', 'menu3' ];
ul
    each menu in menus
        li
            a(href='') #{menu}

但这还不够。如果我试试这个

-var submenus = [ 'sub-menu1', 'sub-menu2', 'sub-menu3' ];
ul
    each menu in menus
        li
            a(href='') #{menu}
            ul
                each submenu in submenus
                li
                    a(href='') #{submenu}

如果每个菜单项具有相同数量的子菜单项,则这可能有效。 但在我的情况下,每个菜单项的子菜单项数量不同。 我该如何解决这个问题? 如何在jade中进行嵌套迭代?

1 个答案:

答案 0 :(得分:3)

你需要一个这个结构的对象,例如:

当地人:

{
  menus: {
    m1: ['a', 'b', 'c', 'd'],
    m2: ['x', 'y', 'z'],
    m3: ['i', 'ii']
  }
}

然后你可以使用这个模板:

ul
  each menuKey in Object.keys(menus)
    - menu = menus[menuKey]
    li
      a(href='')=menuKey
        ul
          each submenu in menu
            li
              a(href='') #{submenu}

您可以在此网站上试用:http://jade-lang.com/demo/ 将模板粘贴到左上角,将本地文件粘贴到右上角的textarea。