国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Vue iview-admin框架二級(jí)菜單改為三級(jí)菜單

codeKK / 2995人閱讀

摘要:最近在用的后臺(tái)模板,從上下載后發(fā)現(xiàn)左側(cè)導(dǎo)航欄最多支持到二級(jí)菜單也發(fā)現(xiàn)很多童鞋在問(wèn)如何實(shí)現(xiàn)三級(jí)菜單。在實(shí)際的應(yīng)用場(chǎng)景中還是會(huì)出現(xiàn)三級(jí)菜單的需求的,木有其他好辦法,只能自己手動(dòng)改代碼了。

最近在用 iview-admin的Vue后臺(tái)模板,從git上下載后發(fā)現(xiàn)左側(cè)導(dǎo)航欄最多支持到二級(jí)菜單,也發(fā)現(xiàn)很多童鞋在問(wèn)如何實(shí)現(xiàn)三級(jí)菜單。在實(shí)際的應(yīng)用場(chǎng)景中還是會(huì)出現(xiàn)三級(jí)菜單的需求的,木有其他好辦法,只能自己手動(dòng)改代碼了。

1. 第一步:首先改寫(xiě)VUE中的模板,修改sidebarMenu.vue文件,文件具體目錄建下圖:

將Menu導(dǎo)航菜單組件的的二級(jí)嵌套結(jié)構(gòu)改為三級(jí)嵌套,無(wú)非就是判斷二級(jí)路由頁(yè)面下是否有children屬性及是否含有子元素,有的話直接v-for循環(huán)生成子元素標(biāo)簽,新結(jié)構(gòu)如下:

組件中methods下添加一個(gè)方法isThirdLeveMenu,判斷是否含有children屬性:

methods: {
    changeMenu(active) {
      this.$emit("on-change", active);
    },
    itemTitle(item) {
      if (typeof item.title === "object") {
        return this.$t(item.title.i18n);
      } else {
        return item.title;
      }
    },
    isThirdLeveMenu(child){
       if(child.children){
           if(child.children.length>0)return true;
           else  return false;
       }
       else {
         return false;
       }
    }
  },

第二步:修改創(chuàng)建當(dāng)前path路徑的邏輯方法:setCurrentPath ,在libs文件夾下util.js文件中:

util.setCurrentPath = function (vm, name) {
    let title = "";
    let isOtherRouter = false;
    vm.$store.state.app.routers.forEach(item => {
        if (item.children.length === 1) {
            if (item.children[0].name === name) {
                title = util.handleTitle(vm, item);
                if (item.name === "otherRouter") {
                    isOtherRouter = true;
                }
            }
        } else {
            item.children.forEach(child => {
                if (child.name === name) {
                    title = util.handleTitle(vm, child);
                    if (item.name === "otherRouter") {
                        isOtherRouter = true;
                    }
                }
            });
        }
    });
    let currentPathArr = [];
    //去首頁(yè)
    if (name === "home_index") {
        currentPathArr = [
            {
                title: util.handleTitle(vm, util.getRouterObjByName(vm.$store.state.app.routers, "home_index")),
                path: "",
                name: "home_index"
            }
        ];
    } 
    //去導(dǎo)航菜單一級(jí)頁(yè)面或者OtherRouter路由中的頁(yè)面
    else if ((name.indexOf("_index") >= 0 || isOtherRouter) && name !== "home_index") {
        currentPathArr = [
            {
                title: util.handleTitle(vm, util.getRouterObjByName(vm.$store.state.app.routers, "home_index")),
                path: "/home",
                name: "home_index"
            },
            {
                title: title,
                path: "",
                name: name
            }
        ];
    } 
    //去導(dǎo)航菜單二級(jí)頁(yè)面或三級(jí)頁(yè)面
    else {
        let currentPathObj = vm.$store.state.app.routers.filter(item => {

            var hasMenu;
            if (item.children.length <= 1) {
                hasMenu = item.children[0].name === name;
                return hasMenu;
            } else {
                let i = 0;
                let childArr = item.children;
                let len = childArr.length;
                while (i < len) {
                    //如果是三級(jí)頁(yè)面按鈕,則在二級(jí)按鈕數(shù)組中找不到這個(gè)按鈕名稱
                    //需要二級(jí)頁(yè)面下可能出現(xiàn)三級(jí)子菜單的情況邏輯加入
                    if (childArr[i].name === name) {
                        hasMenu = true;
                        return hasMenu;
                    }
                    i++;
                }
                //如果一級(jí),二級(jí)菜單下都沒(méi)有此按鈕名稱,則遍歷三級(jí)菜單
                if(!hasMenu){
                    for(let m=0;m {
                return  child.name === name;
            })[0];

           // let thirdLevelObj =
           console.log(childObj)
           //二級(jí)頁(yè)面
            if (childObj) {
                currentPathArr = [
                    {
                        title: "首頁(yè)",
                        path: "/home",
                        name: "home_index"
                    },
                    {
                        title: currentPathObj.title,
                        path: "",
                        name: currentPathObj.name
                    },
                    {
                        title: childObj.title,
                        path: currentPathObj.path + "/" + childObj.path,
                        name: name
                    }
                ];
            }
            //childobj為undefined,再?gòu)娜?jí)頁(yè)面中遍歷
            else {
                let thirdObj;
                let childObj = currentPathObj.children.filter((child) => {
                    let hasChildren;
                    hasChildren = child.name === name;
                    if (hasChildren) return hasChildren

                    if (child.children) {
                        let sonArr = child.children;
                        for (let n = 0; n < sonArr.length; n++) {
                            if (sonArr[n].name === name) {
                                thirdObj = sonArr[n];
                                hasChildren = true;
                                return hasChildren;
                            }
                        }
                    }
                    return hasChildren
                })[0];

                if(thirdObj && childObj){
                    currentPathArr = [
                        {
                            title: "首頁(yè)",
                            path: "/home",
                            name: "home_index"
                        },
                        {
                            title: currentPathObj.title,
                            path: "",
                            name: currentPathObj.name
                        },
                        {
                            title: childObj.title,
                            path: "",               //設(shè)為空是因?yàn)榇硕?jí)菜單沒(méi)有實(shí)際頁(yè)面且用于面包屑組件顯示,path為空的將不可單擊
                            name: childObj.name
                        },
                        {
                            title: thirdObj.title,
                            path: currentPathObj.path + "/" + childObj.path + "/" + thirdObj.path,
                            name: thirdObj.name
                        }
                    ];
                }
                
            }
            
        }
    }
    
    vm.$store.commit("setCurrentPath", currentPathArr);
    return currentPathArr;
};

第三步:建立三級(jí)頁(yè)面test-child.vue,testcaca.vue和三級(jí)路由的容器組件artical-publish-center.vue
artical-publish-center.vue結(jié)構(gòu)如下圖: 要有標(biāo)簽

其他兩個(gè)三級(jí)頁(yè)面vue隨便寫(xiě)了:

第四步:到這里,容器可以實(shí)現(xiàn)期待已久三級(jí)菜單了,^_^. 在router里添加三級(jí)頁(yè)面路由,router文件夾下router.js中:
加到appRouter中吧,可以放到title: "組件"的children數(shù)組中:

{
                path: "artical-publish",
                title: "用戶配置",
                name: "artical-publish",
                icon: "compose",
                component: () => import("@/views/test/artical-publish-center.vue"), //引用三級(jí)頁(yè)面的中間容器層
                children:[
                    {
                        path: "testcaca",
                        icon: "ios-pause",
                        name: "testcaca",
                        title: "test4",
                        component: () => import("@/views/test/testcaca.vue")
                    },
                    {
                        path: "test-child",
                        icon: "ios-pause",
                        name: "test-child",
                        title: "test-child",
                        component: () => import("@/views/test/test-child.vue")
                    }
                ]
            }  

最后保存,運(yùn)行你的項(xiàng)目,看下三級(jí)菜單出來(lái)了吧:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/95892.html

相關(guān)文章

  • iview-admin 三級(jí)菜單路由嵌套

    摘要:使用,框架是二級(jí)菜單,因業(yè)務(wù)需要改成三級(jí)菜單。系統(tǒng)配置用戶配置管理員部門(mén)信息工單配置出現(xiàn)了,請(qǐng)寫(xiě),問(wèn)題重現(xiàn)了問(wèn)題也就解決啦。 使用iview-admin,框架是二級(jí)菜單,因業(yè)務(wù)需要改成三級(jí)菜單。其他部分都已經(jīng)改好,但是頁(yè)面仍然沒(méi)有出來(lái),頁(yè)面也沒(méi)有了報(bào)錯(cuò),比較詭異。后來(lái)發(fā)現(xiàn)問(wèn)題可能在路由配置,看到了別人寫(xiě)的這個(gè)demo,鏈接:https://jsfiddle.net/767nb8u1/1...

    劉明 評(píng)論0 收藏0
  • Element做管理系統(tǒng)時(shí) 2、3級(jí)路由切換時(shí),界面數(shù)據(jù)不緩存問(wèn)題

    摘要:解決方案方法一適用范圍,菜單列表是通過(guò)接口返回的。菜單列表不是接口返回的,接口只返回訪問(wèn)菜單的權(quán)限,大體意思就是統(tǒng)一把路由寫(xiě)成三級(jí)形式。我比較贊成菜單權(quán)限列表一律放在后臺(tái)做這樣做風(fēng)險(xiǎn)遠(yuǎn)比在前端處理的要小。 解決方案 方法一: 適用范圍,菜單列表是通過(guò)接口返回的。PS:只要通過(guò)接口返回的菜單列表就意味著用戶是可以訪問(wèn)的,權(quán)限處理一律放在后臺(tái)做,但寫(xiě)本地路由時(shí)不論是二級(jí)界面還是三級(jí)界面,配...

    wuyangchun 評(píng)論0 收藏0
  • 關(guān)于前后端分離權(quán)限控制,元素細(xì)粒度(iview-admin實(shí)現(xiàn))

    摘要:按鈕方面按鈕通過(guò)自定義指令綁定其特定的操作接口信息如產(chǎn)品上傳按鈕,需要擁有產(chǎn)品上傳的信息,才可以繼續(xù)執(zhí)行按鈕的業(yè)務(wù)邏輯。 開(kāi)篇啰嗦幾句 在傳統(tǒng)單體項(xiàng)目中,通常會(huì)有一些框架用來(lái)管理熟知的權(quán)限。如耳濡目染的 Shiro 或者 Spring Security 。然而,到了現(xiàn)在這個(gè)時(shí)代,新開(kāi)始的項(xiàng)目會(huì)更多的才用后端微服務(wù) + 前端 mvvm 的架構(gòu)開(kāi)始書(shū)寫(xiě)項(xiàng)目。權(quán)限控制方面將變得有些許晦澀。當(dāng)...

    YorkChen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<