超级好用的elementui动态循环菜单

简介: 超级好用的elementui动态循环菜单
<template>
    <div>
        <el-menu
            @select="selectMenu"
            :default-active="currentIndexLight"
            class="el-menu-vertical-demo"
            @open="handleOpen"
            @close="handleClose"
            background-color="#545c64"
            text-color="#fff"
            :router="startRouter"
            active-text-color="#ffd04b"
        >
            <!--  
            :default-openeds="arrIndex"
            -->
            <div v-for="item in menuList" :key="item.path">
                <!-- 没有子菜单 -->
                <template v-if="item.children && item.children.length == 0">
                    <el-menu-item :index="item.path">
                        <i class="el-icon-menu"></i>
                        {{item.title}}
                    </el-menu-item>
                </template>
                <!-- 有子菜单 -->
                <el-submenu v-else :index="item.path">
                    <template slot="title">
                        <i class="el-icon-menu"></i>
                        {{item.title}}
                    </template>
                    <template v-for="child in item.children">
                        <!-- 这里是类似递归循环 -->
                        <sidebar-item
                            v-if="child.children&&child.children.length>0"
                            :item="child"
                            :key="child.path"
                        />
                        <el-menu-item v-else :key="child.path" :index="child.path">
                            <i class="el-icon-location"></i>
                            {{child.title}}
                        </el-menu-item>
                    </template>
                </el-submenu>
            </div>
        </el-menu>
    </div>
</template>
<script>


export default {
    data() {
        return {
            startRouter: true,//开启路由标识, ,启用该模式会在激活导航时以 index 作为 path 进行路由跳转
            currentIndexLight: '',//当前激活菜单的 index  高亮显示
            arrIndex: [],
            menuList: [
                {
                    "path": "/awaitdoing",     //菜单项所对应的路由路径
                    "title": "功能1",     //菜单项名称
                    "children": []        //是否有子菜单,若没有,则为[]
                },
                {
                    "path": "/quickset",
                    "title": "功能2",
                    "children": []
                },
                {
                    "path": "aa",
                    "title": "功能3",
                    "children": [
                        {
                            "path": "/awaitdo",
                            "title": "功能3-1",
                            "children": []
                        },
                        {
                            "path": "/alreadygreen",
                            "title": "功能3-2",
                            "children": []
                        },
                        {
                            "path": "/approvedby",
                            "title": "功能3-3",
                            "children": []
                        },
                    ]
                },
                {
                    "path": "/func10",
                    "title": "功能10",
                    "children": []
                }
            ]
        }
    },
    methods: {
        selectMenu(key, keyPath) {
            console.log(key, keyPath)
            this.currentIndexLight = key;
        },
        // 展开指定的 sub-menu
        handleOpen(key, keyPath) {
            console.log('展开的时候触发', key, keyPath);
        },
        //    收起指定的 sub-menu
        handleClose(key, keyPath) {
            console.log('收起的时候触发', key, keyPath);
        }
    }
}
</script>


1425695-20200918222328237-536746244.png


相关文章
|
1月前
|
JavaScript
基于Vue2或Vue3实现任意上下左右拖拽悬浮的元素,且配置为自定义的全局指令
这篇文章介绍了如何在Vue 2或Vue 3项目中实现一个自定义的全局指令`v-dragSwitch`,用于创建可以任意方向拖拽并悬浮的元素,同时包含边界处理的逻辑。
279 2
基于Vue2或Vue3实现任意上下左右拖拽悬浮的元素,且配置为自定义的全局指令
|
26天前
|
Web App开发 存储 前端开发
vue2精简方式实现鼠标在方框内拖拽效果源码
vue2精简方式实现鼠标在方框内拖拽效果源码
25 3
|
2月前
|
开发框架 监控 前端开发
使用Vue-TreeSelect组件的时候,用watch变量方式解决弹出编辑对话框界面无法触发更新的问题
使用Vue-TreeSelect组件的时候,用watch变量方式解决弹出编辑对话框界面无法触发更新的问题
|
2月前
|
JavaScript
vue实战--v-for 遍历渲染按钮的两种实现方案(重点:按钮点击事件的绑定技巧)
vue实战--v-for 遍历渲染按钮的两种实现方案(重点:按钮点击事件的绑定技巧)
40 1
|
4月前
|
JavaScript
vue中多组件调用,实现上下分屏,上下拖动
vue中多组件调用,实现上下分屏,上下拖动
158 0
|
4月前
|
JavaScript 前端开发 API
vue改变数组页面重新渲染的操作/那些操作不会重新渲染页面以及解决方法
vue改变数组页面重新渲染的操作/那些操作不会重新渲染页面以及解决方法
97 2
|
4月前
|
移动开发 前端开发
VUE3一种用户可以设置显示隐藏列表内容的方法
VUE3一种用户可以设置显示隐藏列表内容的方法
57 0
|
JavaScript
Vue实现以按钮弹框动态控制Table列展示
点击设置弹出列数,并根据选择列进行展示:
176 0
|
4月前
|
前端开发 JavaScript
前端知识笔记(十四)———js全屏与退出全屏切换功能,实现样式改变效果
前端知识笔记(十四)———js全屏与退出全屏切换功能,实现样式改变效果
58 0
|
JavaScript 前端开发 索引
Vue中拖动排序功能,引入SortableJs,前端拖动排序。
Vue中拖动排序功能,引入SortableJs,前端拖动排序。
217 0