zoukankan      html  css  js  c++  java
  • elementui v-for el-menu 任意多级菜单

    父组件:Nav.vue

    <template>
        <div>
            <el-menu
                    default-active="1"
                    background-color="#545c64"
                    text-color="#fff"
                    active-text-color="#ffd04b">
                <!-- 引入组件 -->
                <MenuTree :menuData="menuList"></MenuTree>
            </el-menu>
        </div>
    </template>
    
    <script>
        import {reactive, ref, isRef, toRefs, onMounted, watch, onUnmounted} from '@vue/composition-api';
        import MenuTree from "../../../components/MenuTree";
    
        export default {
            name: "Nav",
            components: {
                MenuTree: MenuTree
            },
            setup({root, refs,}, props) {
                const isCollapse = ref(true);
    
                const menuData = reactive('menuData')
                const menuList = reactive([{
                    index: "1",
                    name: "1",
                    icon: 'el-icon-s-order',
                    children: [{
                        index: "2",
                        name: "1-2",
                        icon: 'el-icon-s-order',
                        children: [{
                            index: "3",
                            name: "1-2-1",
                            icon: 'el-icon-s-order',
                        }, {
                            index: "4",
                            name: "1-2-2",
                            icon: 'el-icon-s-order',
                            children: [{
                                index: "5",
                                name: "1-2-2-1",
                                icon: 'el-icon-s-order',
                            }, {
                                index: "6",
                                name: "1-2-2-2",
                                icon: 'el-icon-s-order',
                                children: [{
                                    index: "7",
                                    name: "1-2-2-2-1",
                                    icon: 'el-icon-s-order',
                                },{
                                    index: "8",
                                    name: "1-2-2-2-2",
                                    icon: 'el-icon-s-order',
                                }]
                            }]
                        }],
                    }]
                }, {
                    index: "9",
                    name: "2",
                    icon: 'el-icon-s-order',
                }, {
                    index: "10",
                    name: "3",
                    icon: 'el-icon-s-order',
                }, {
                    index: "11",
                    name: "4",
                    icon: 'el-icon-s-order',
                }])
    
    
                const handleOpen = ((key, keyPath) => {
                    console.log(key, keyPath);
                })
    
                const handleClose = ((key, keyPath) => {
                    console.log(key, keyPath)
                })
    
    
                return {
                    menuList,
                    handleOpen,
                    handleClose,
                    menuData
                }
            }
        }
    </script>
    
    <style lang="scss" scoped>
    
    
    </style>
    

    子组件:MenuTree.vue

    <template>
        <div>
            <template v-for="(menu,index) in menuData">
                <el-submenu :key="menu.index" :index="menu.index" v-if="menu.children" >
                    <template slot="title">
                            <i :class="menu.icon"></i>
                            <span slot="title">{{menu.name}}</span>
                    </template>
                    <MenuTree :menuData="menu.children" ></MenuTree>
                </el-submenu>
                <el-menu-item :key="menu.index" :index="menu.index"   v-else>
                        <i :class="menu.icon"></i>
                        <span slot="title">{{menu.name}}</span>
                </el-menu-item>
            </template>
        </div>
    </template>
    
    <script>
        import {reactive, ref, isRef, toRefs, onMounted, watch, onUnmounted} from '@vue/composition-api';
        export default {
            name: "MenuTree",
            props: ['menuData'],
            components:{
            },
            setup({root}, props) {
                return {
                    props,
                }
            }
        }
    </script>
    
    <style lang="scss" scoped>
        .bgc{
            background-color: #f56c6c;
        }
    
        .bgcChild{
            background-color: #f56c6c;
        }
    
    
    </style>
    

    效果:

  • 相关阅读:
    Xcode 10 关于 CocoaPods 安装失败的问题RuntimeError
    iOS 解决xcode设置全局断点后 执行视频播放时自动进入断点cxa_throw
    iOS swift String 换行显示
    iOS wkWebView点击链接无反应
    iOS swift跑马灯滚动可以点击
    iOS swift版本无限滚动轮播图
    iOS swift中比较模型数组是否相等
    iOS valueForKeyPath快速计算求和、平均值、最大、最小
    iOS 全屏播放网页视频退出后状态栏被隐藏
    vacabulary1
  • 原文地址:https://www.cnblogs.com/yscec/p/13748704.html
Copyright © 2011-2022 走看看