Vue iview-admin 프레임워크에서 두 번째 수준 메뉴를 세 번째 수준 메뉴로 변경하는 방법

不言
풀어 주다: 2018-07-09 13:57:16
원래의
5393명이 탐색했습니다.

이 글은 Vue iview-admin 프레임워크에서 2단계 메뉴를 3단계 메뉴로 변경하는 방법을 주로 소개합니다. 이제는 필요한 친구들이 참고할 수 있도록 공유합니다.

저는 최근 iview-admin을 사용하고 있습니다. git에서 Vue 백엔드 템플릿을 다운로드한 후 왼쪽 네비게이션 바가 2단계 메뉴까지 지원하는 것을 발견했습니다. 또한 많은 아이들이 3단계 구현 방법을 묻는 것을 발견했습니다. 메뉴. 실제 애플리케이션 시나리오에서는 여전히 3단계 메뉴가 필요합니다. 코드를 직접 변경하는 것 외에는 다른 좋은 방법이 없습니다.

1단계: 먼저 VUE에서 템플릿을 다시 작성하고 sidebarMenu.vue 파일을 수정합니다. 파일의 특정 디렉터리는 다음과 같습니다.

Vue iview-admin 프레임워크에서 두 번째 수준 메뉴를 세 번째 수준 메뉴로 변경하는 방법

메뉴 탐색 메뉴 구성 요소의 보조 중첩 구조를 변경합니다. 3레벨 중첩은 하위 라우팅 페이지 아래에 하위 속성이 있는지 여부와 하위 요소가 포함되어 있는지 여부를 결정하는 것 이상입니다. 그렇다면 v-for 루프가 직접 하위 요소 태그를 생성합니다.

<template>
    <menu>
        <template>
            <menuitem>
                <icon></icon>
                <span>{{ itemTitle(item.children[0]) }}</span>
            </menuitem>

            <submenu> 1" :name="item.name" :key="item.name">
                <template>
                    <icon></icon>
                    <span>{{ itemTitle(item) }}</span>
                </template>
                <template>
                    <!-- 添加条件判断是否还有三级菜单 v-if="child.children.length<=1"  -->
                    <menuitem>
                        <icon></icon>
                        <span>{{ itemTitle(child) }}</span>
                    </menuitem>
                    <!-- 以下为新增 添加条件判断如果有三级菜单 则增加三级菜单 -->
                    <submenu>
                         <template>
                             <icon></icon>
                              <span>{{ itemTitle(child) }}</span>
                         </template>
                         <template>
                              <menuitem>
                                   <icon></icon>
                                   <span>{{ itemTitle(son) }}</span>
                              </menuitem>
                         </template>
                    </submenu>
                    <!-- 以上为新增 -->
                </template>
            </submenu>
        </template>
    </menu>
</template>
로그인 후 복사

구성 요소의 메소드 아래에 isThirdLeveMenu 메소드를 추가하고 하위 속성이 포함되어 있는지 확인합니다.

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;
       }
    }
  },
로그인 후 복사

2단계: libs 폴더 아래의 util.js 파일에 현재 경로 setCurrentPath를 생성하도록 논리적 메소드를 수정합니다.

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 = [];
    //去首页
    if (name === 'home_index') {
        currentPathArr = [
            {
                title: util.handleTitle(vm, util.getRouterObjByName(vm.$store.state.app.routers, 'home_index')),
                path: '',
                name: 'home_index'
            }
        ];
    } 
    //去导航菜单一级页面或者OtherRouter路由中的页面
    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
            }
        ];
    } 
    //去导航菜单二级页面或三级页面
    else {
        let currentPathObj = vm.$store.state.app.routers.filter(item => {

            var hasMenu;
            if (item.children.length  {
                return  child.name === name;
            })[0];

           // let thirdLevelObj =
           console.log(childObj)
           //二级页面
            if (childObj) {
                currentPathArr = [
                    {
                        title: '首页',
                        path: '/home',
                        name: 'home_index'
                    },
                    {
                        title: currentPathObj.title,
                        path: '',
                        name: currentPathObj.name
                    },
                    {
                        title: childObj.title,
                        path: currentPathObj.path + '/' + childObj.path,
                        name: name
                    }
                ];
            }
            //childobj为undefined,再从三级页面中遍历
            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 <p><strong>3단계: 세 번째 수준 페이지 만들기 test-child.vue, testcaca.vue 및 세 번째 수준 라우팅 컨테이너 구성 요소 예술적인-publish-center.vue</strong><br><strong>artical-publish-center.vue의 구조는 다음과 같습니다. 다음과 같습니다: <rout-view> 태그가 있어야 합니다</rout-view></strong></p><p><img src="https://img.php.cn//upload/image/524/766/974/1531115697133053.png" title="1531115697133053.png" alt="Vue iview-admin 프레임워크에서 두 번째 수준 메뉴를 세 번째 수준 메뉴로 변경하는 방법"> </p><p>Vue는 다른 두 개의 3단계 페이지를 자연스럽게 작성했습니다. </p><p><img src="https://img.php.cn//upload/image/142/703/339/1531115707261749.png" title="1531115707261749.png" alt="Vue iview-admin 프레임워크에서 두 번째 수준 메뉴를 세 번째 수준 메뉴로 변경하는 방법"></p><p><strong>이 시점에서 컨테이너는 긴 -기다려진 3단계 메뉴 ^_^. 라우터 폴더 아래의 router.js에서 3단계 페이지 라우팅을 추가하세요. </strong><br>appRouter에 추가하세요. 제목의 하위 배열에 넣을 수 있습니다. Component': </p><pre class="brush:php;toolbar:false">{
                path: 'artical-publish',
                title: '用户配置',
                name: 'artical-publish',
                icon: 'compose',
                component: () => import('@/views/test/artical-publish-center.vue'), //引用三级页面的中间容器层
                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')
                    }
                ]
            }
로그인 후 복사

마지막으로 저장하고 프로젝트를 실행하면 3차 메뉴가 나오는 것을 확인하실 수 있습니다. :

Vue iview-admin 프레임워크에서 두 번째 수준 메뉴를 세 번째 수준 메뉴로 변경하는 방법

위 내용이 모든 분들께 도움이 되기를 바랍니다. 더 많은 관련 내용을 보시려면 PHP 중국어 웹사이트를 주목해주세요!

관련 권장 사항:

mixin을 사용하여 자체 제작한 vue 구성 요소 통신 플러그인용 플러그인 작성

Vue 활동 생성 프로젝트 도로 설계 및 탐색 모음 개발

위 내용은 Vue iview-admin 프레임워크에서 두 번째 수준 메뉴를 세 번째 수준 메뉴로 변경하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿