ホームページ  >  記事  >  ウェブフロントエンド  >  Vue iview-admin フレームワークの第 2 レベルのメニューを第 3 レベルのメニューに変更する方法

Vue iview-admin フレームワークの第 2 レベルのメニューを第 3 レベルのメニューに変更する方法

不言
不言オリジナル
2018-07-09 13:57:165377ブラウズ

この記事では主に、Vue iview-admin フレームワークの第 2 レベルのメニューを第 3 レベルのメニューに変更する方法を紹介します。これで、必要な友人と共有できます。

最近 iview-admin を使用しています。git から Vue バックエンド テンプレートをダウンロードした後、左側のナビゲーション バーが第 2 レベルのメニューまでサポートしていることがわかりました。また、多くの子供たちが第 3 レベルの実装方法を尋ねていることに気付きました。メニュー。実際のアプリケーションのシナリオでは、依然として 3 レベルのメニューが必要になります。コードを手動で変更する以外に良い方法はありません。

1. ステップ 1: まず、VUE でテンプレートを書き直し、ファイルの特定のディレクトリを以下に示します:

Vue iview-admin フレームワークの第 2 レベルのメニューを第 3 レベルのメニューに変更する方法

メニュー ナビゲーション メニュー コンポーネントの 2 番目の入れ子構造を変更します。 3 レベルのネストは、セカンダリ ルーティング ページの下に Children 属性があるかどうか、および子要素が含まれているかどうかを判断するだけです。新しい構造は次のとおりです。コンポーネントのメソッドの下にメソッド isThirdLeveMenu を追加し、それに Children 属性が含まれているかどうかを確認します:

<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>

ステップ 2: 論理メソッドを変更して現在のパスを作成する: setCurrentPath、libs フォルダーの下の util.js ファイル内:

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;
       }
    }
  },

ステップ 3: 第 3 レベルのページを作成する test-child.vue、testcaca.vue、および第 3 レベルのルーティング コンテナ コンポーネントartistic-publish-center.vue

artical-publish-center.vueの構造は次のとおりです。次のように: タグが必要です

Vue iview-admin フレームワークの第 2 レベルのメニューを第 3 レベルのメニューに変更する方法他の 2 つの第 3 レベルのページは次のように書きました:

Vue iview-admin フレームワークの第 2 レベルのメニューを第 3 レベルのメニューに変更する方法

ステップ 4: この時点で、コンテナは長い-待望の第 3 レベルのメニュー、^_^。ルーター フォルダーの下の router.js に第 3 レベルのページ ルーティングを追加します。

それをタイトルの子配列に追加できます。コンポーネント':

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 <br> 最後に、プロジェクトを実行し、第 3 レベルのメニューが表示されるのを確認します。:<p><strong></strong></p><p><img src="https://img.php.cn//upload/image/167/553/211/1531115719895061.png" title="1531115719895061.png" alt="Vue iview-admin フレームワークの第 2 レベルのメニューを第 3 レベルのメニューに変更する方法"> 以上がこの記事の全内容です。関連コンテンツについては、PHP 中国語 Web サイトに注目してください。 </p><p>関連する推奨事項: </p><p></p> mixin を使用して、自作の Vue コンポーネント通信プラグイン用のプラグインを作成する<p class="mb20"><a title="自制vue组件通信插件之用mixin写插件" href="http://www.php.cn/js-tutorial-406271.html" target="_blank"></a><br></p> Vue アクティビティ作成プロジェクトのロードバイデザインとナビゲーション バーの開発<p class="block-for-right-border"><a title="Vue活动创建项目之路由设计及导航栏的开发" href="http://www.php.cn/js-tutorial-406268.html" target="_blank"></a></p>

以上がVue iview-admin フレームワークの第 2 レベルのメニューを第 3 レベルのメニューに変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。