vue2.0制作一个多级嵌套菜单栏

        使用v-for循环生成一个多级嵌套菜单栏,只要你学会了这个方法,几乎所有的菜单栏都可以实现了。

实现方法

现在以一个三级菜单栏为例:


<div class="level-one" v-if="obj.level == 1" v-for="obj in bar1"><a>{{obj.title}}</a>
  <div class="level-two" v-if="obj1.parentId == obj.id " v-for="obj1 in bar1"><a>{{obj1.title}}</a>
    <div class="level-three" v-if="obj2.parentId == obj1.id" v-for="obj2 in bar1"><a>{{obj2.title}}</a></div>
  </div>
</div>
.level-one{
  text-indent: 1em;
}
.level-two{
  text-indent: 2em;
}
.level-three{
  text-indent: 3em;
}
bar1:[
  /*所有第一级菜单*/
  {
    title:'一级菜单(1)',
    id:1,             //选项的唯一ID
    parentId:0,       //父级的ID
    level:1           //所处的层级
  },
  {
    title:'一级菜单(2)',
    id:2,
    parentId:0,
    level:1
  },
  {
    title:'一级菜单(3)',
    id:3,
    parentId:0,
    level:1,
  },

  /*所有二级菜单*/
  {
    title:'二级菜单(1.1)',
    id:4,
    parentId:1,
    level:2
  },
  {
    title:'二级菜单(1.2)',
    id:5,
    parentId:1,
    level:2
  },
  {
    title:'二级菜单(2.1)',
    id:6,
    parentId:2,
    level:2
  },
  {
    title:'二级菜单(2.2)',
    id:7,
    parentId:2,
    level:2
  },

  /*所有三级菜单*/
  {
    title:'三级菜单(1.1.1)',
    id:8,
    parentId:4,
    level:3
  },
  {
    title:'三级菜单(1.1.2)',
    id:9,
    parentId:4,
    level:3
  }
]

解释:

1)菜单栏嵌套了多少层,就需要进行多少次v-for循环;

2)通过v-if来选择level=1的选项作为最外层;

3)通过判断选项的parentId等于上一层的id,来确定它是哪个选项的子级菜单;

4)同理,多级菜单,依次进行循环。

(完)


猜你喜欢

转载自blog.csdn.net/mr_javascript/article/details/80799749