vue左側菜單遞歸組件--基于 iview dropdown組件

基于 iview dropdown 組件,$http 用 axios 進行了封裝

SideBar.vue (遞歸調用)

<template>
    <div class="side-body">
        <Dropdown class="side-drop" v-for="key,x in treeData" placement="right-start" :key="key">
            <a href="javascript:void(0)" @click="createHtml(x)">
                <i :class="x.icon"></i>
                <span class="layout-text"> {{x.title}}</span>
            </a>
            <DropdownMenu slot="list">
                <mi :menudata="x.children"></mi>
            </DropdownMenu>
        </Dropdown>
    </div>
</template>
<script>
    import mi from './mi.vue'

    export default {
        data() {
            return {
                treeData: []
            }
        },
        components: {mi},
        methods: {
        },
        created() {//初始化獲取菜單json 
            this.$http.get('dashboard/entries')
                .then(res => {
                    let code = res.data.returnCode;
                    if (code == 0) {
                        this.treeData = res.data.beans;
                    } else {
                        alert(res.data.returnMessage);
                    }
                })
                .catch(function (error) {
                    console.log(error)
                })
        }
    }
</script>

mi.vue (遞歸組件)

<template>
    <div>
        <div v-for="x in menudata">
            <div v-if="x.children && x.children.length>0">
                <Dropdown placement="right-start">
                    <DropdownItem>
                        <span @click="createHtml(x)">{{x.title}}</span>
                        <Icon type="ios-arrow-right"></Icon>
                    </DropdownItem>
                    <DropdownMenu slot="list">
                        <mi :menudata="x.children"></mi>
                    </DropdownMenu>
                </Dropdown>
            </div>
            <div v-else>
                <DropdownItem>
                    <span @click="createHtml(x)">{{x.title}}</span>
                </DropdownItem>
            </div>
        </div>
    </div>
</template>
<script>
    export default {
        name: 'mi',
        props: ['menudata'],
        data: function () {
            return {}
        }
    }
</script>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 來源:github.com Vue.js開源項目速查表:https://www.ctolib.com/cheats...
    zhangtaiwei閱讀 11,659評論 1 159
  • UI組件 element - 餓了么出品的Vue2的web UI工具套件 Vux - 基于Vue和WeUI的組件庫...
    卞卞村長L閱讀 1,745評論 0 8
  • 你讓工人為你工作7天,給工人的回報是一根金條。金條平分成相連的7段,你必須在每天結束時給他們一段金條,如果只許你兩...
    博格體閱讀 1,212評論 0 0
  • 工欲善其事必先利其器。如果你想快速的開發項目,必須選一個合適你的開發工具。這里主要說一下PhpStorm對lara...
    鳳之戀閱讀 8,336評論 1 76
  • 春日 與綠葉托舉著的白蘭花/ 一同醒來/ 與長壽谷的桃花一同醒來/ 茶香裊裊 與古琴低語 何日高山流水覓知音?
    飛雪姐姐閱讀 183評論 0 1