基于iView的无限级菜单

<template>
    <Submenu :name="parentItem.name">
        <template slot="title">
            <Icon :type="parentItem.icon" :size="15"/>
            <span>{{ parentItem.title }}</span>
        </template>
        <template v-for="item in parentItem.children">
            <side-menu-item 
                v-if="item.children&&item.children.length!==0" 
                :parent-item="item" 
                :key="'menu-'+item.name"
            >
            </side-menu-item>
            <menu-item v-else :name="item.name" :key="'menu-'+item.name">
                <Icon :type="item.icon" :size="15" />
                <span>{{ item.title }}</span>
            </menu-item>
        </template>
    </Submenu>
</template>

<script>
export default {
    name: 'sideMenuItem',
    props: {
        parentItem: {
            type: Object,
              default: () => {}
        }
    }
}
</script>

<style lang="scss" scoped>

</style>
<template>
    <Menu width="auto" 
        :active-name="activeName" 
        :open-names="openNames" 
        @on-select="handleSelect"
    >
      <template v-for="item in items">
        <side-menu-item 
            v-if="item.children&&item.children.length!==0" 
            :parent-item="item"
            :key="'menu-'+item.name" 
        >
        </side-menu-item>
        <menu-item v-else 
            :name="item.name" 
            :key="'menu-'+item.name"
        >
            <Icon :type="item.icon" :size="15"/>
            <span>{{ item.title }}</span>
        </menu-item>
      </template>
    </Menu>
</template>

<script>
import sideMenuItem from '@/views/main/components/side-menu/side-menu-item.vue'
export default {
    name: 'sideMenu',
    props: {
        activeName: {
            type: String,
            default: 'auth'
        },
        openNames: {
            type: Array,
            default: () => [
                'other',
                'role',
                'auth'
            ]
        },
        items: {
            type: Array,
            default: () => [
                { 
                    name : 'system', 
                    title : '系统管理', 
                    icon : 'outlet', 
                    children: [
                        { name : 'user', title : '用户管理', icon : 'outlet' }
                    ] 
                },
                { 
                    name : 'other', 
                    title: '其他管理', 
                    icon : 'outlet',
                    children : [
                        { 
                            name : 'role', 
                            title : '角色管理', 
                            icon : 'outlet',
                            children : [
                                { name : 'auth', title : '权限管理', icon : 'outlet' }
                            ] 
                        }
                    ] 
                }
            ]
        }
    },
    components: {
        sideMenuItem
    },
    methods: {
        handleSelect(name) {
            this.$emit('on-select', name)
        }
    }
}
</script>

<style lang="scss" scoped>

</style>

猜你喜欢

转载自www.cnblogs.com/xiaowangzhi/p/9142971.html
今日推荐