右侧二级菜单-分类和三级菜单条目
二级菜单数据1
二级菜单数据2
二级菜单数据3
二级菜单数据4-三级菜单条目
二级和三级菜单展示
代码
export default { data () { return { currentId: 1, cate: [] } }, computed: { // 如果data中的数据发生变化,那么计算属性会重新计算结果 // 计算属性会基于之前的计算结果进行缓存(如果计算属性依赖的data发生变化,那么计算属性就会重新计算) rightData: function () { // 从全部数据中获取当前一级分类对应的右侧数据 let data = this.cate.filter(item => { return item.cat_id === this.currentId }) // 数组中必须有数据,才能获取对应的子属性 let rlist = data.length > 0 && data[0].children return rlist } }, }情况一:遍历二级菜单,不加:key
二级菜单遍历,显示效果
情况二:遍历二级菜单,加:key; 正常写法
二级菜单遍历,显示效果
三级菜单数据
情况一:三级菜单结构
三级菜单静态图
情况二:动态获取三级菜单数据
注意:key同为index索引会报错
三级菜单动态图
右侧二级和三级菜单-重点样式
.right { flex: 1; height: 100%; overflow: auto; .brand-item { .brand-title { text-align: center; line-height: 2; } .brand-list { display: flex; flex-wrap: wrap; .brand { width: 33.33%; padding: 20rpx; box-sizing: border-box; img { width: 100%; height: 100rpx; } p { line-height: 1.5; font-size: 14px; text-align: center; } } } } }一、二、三级菜单完整动态结构
<div> <!-- 搜索栏 --> <search-bar></search-bar> <div class="content"> <!-- 左侧一级分类 --> <div class="left" @click='handleChange'> <div :data-id='item.cat_id' :key='item.cat_id' v-for='item in cate' :class="['menu-item', {active: currentId === item.cat_id}]"> {{item.cat_name}} </div> </div> <!-- 右侧二级和三级分类 --> <div class="right"> <div :key='item.cat_id' v-for='item in rightData' class="brand-item"> <!-- 二级分类的标题 --> <div class="brand-title">{{item.cat_name}}</div> <!-- 三级分类 --> <div class="brand-list"> <!-- 每一个三级品牌 --> <div :key='i' v-for='(brand, i) in item.children' class="brand"> <img :src="brand.cat_icon"> <p>{{brand.cat_name}}</p> </div> </div> </div> </div> </div> </div>