Vueは3階層メニューを再帰的に実装する

Vueは3階層メニューを再帰的に実装する

この記事の例では、3階層メニューを再帰的に実装するVueの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

親コンポーネント

<テンプレート>
    <div class="メニューレベルメニューメニューレベルメニュー-enter" v-if="showLevelMenu">
      <menu-item class="menu-item" :menuDate="メニューリスト"></menu-item>
    </div>
</テンプレート>

サブコンポーネント

<テンプレート>
  <div>
    <div class="" v-for="(menu, index) in menuDate" :key="index">
    // 各メニュー項目 <div class="menu-row" @click="menuSpread(menu)"
           :class="[{'menu-row-selected': menu.selected && menu.children.length <= 0}]">
        <div class="menu-row-left">
          <div class="menu-row-left-line" :class="[{'menu-selected': menu.selected && menu.children.length <= 0}]"></div>
          <i class="iconfont" :class="[menu.menuIcon, {'color-icon': showIconColor(menu)}]"></i>
        </div>
        <div class="menu-row-right">
          <span :class="[{'font-16': menu.level === '0'}]">{{menu.menuName}}</span>
          <i class="c" v-if="menu.children.length <= 0"></i>
          <i class="iconfont icon-liebiaoxiala" v-if="menu.children.length>0 && !menu.selected"></i>
          <i class="iconfont icon-liebiaoshouqi" v-if="menu.children.length>0 && menu.selected"></i>
        </div>
      </div>
      // メニューを再帰的に表示します <menu-item v-show="menu.selected" v-if="menu.children.length>0" :menuDate="menu.children"></menu-item>
    </div>
  </div>
</テンプレート>
<スクリプト>
  エクスポートデフォルト{
    小道具: {
      menuDate: 配列
    },
    名前: 'メニュー項目',
    メソッド: {
      menuSpread (メニュー) {
        menu.menuRouter の場合、 this.$router.push(menu.menuRouter);
        メニューが選択されました = !メニューが選択されました;
        this.recursion(this.menuDate、メニュー);
      },
      再帰(すべて、一時){
        all.forEach(アイテム => {
          if (item.menuName !== temp.menuName) {
            項目が選択されました = false;
            this.recursion(item.children, temp);
          }
        });
      },
      showIconColor (メニュー) {
        show = false とします。
        メニューレベル === '0' の場合 {
          menu.children.forEach(item => {
            if (item.children.length <= 0 && item.selected) {
              表示 = true;
            }
            (アイテムの子供の長さ>0)の場合{
              アイテム.children.forEach(アイテム => {
                (項目が選択されている場合){
                  表示 = true;
                }
              });
            }
          });
        }
        リターンショー;
      }
    }
  };
</スクリプト>

レンダリング

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue+elementは、3階層のメニューページを表示する操作を実装するために動的読み込みルーティングを使用します。
  • Vue.jsは3段階のメニュー効果を実現します
  • Vueはバックグラウンド管理権限システムとトップバーの3段階メニュー表示機能を実装しています
  • Vue iview-adminフレームワークのセカンダリメニューを第3レベルメニューに変更する方法
  • vue+iviewのメニューとタブの連携方法
  • Vueは左と右のメニューリンク実装コードを実装します
  • Vueはmint-uiをベースに都市選択の3段階連携を実現
  • 州、市、地区間の3階層の連携を実現するためのVue、element-ui、axiosの詳細な説明
  • vue + elementUI が州、市、郡間の 3 レベルの連携を実現する方法の例
  • Vueは3レベルのリンクダイナミックメニューを実装します

<<:  Docker はキューとタスクのスケジューリングを実現するために Laravel アプリケーションをデプロイします

>>:  Windows 10 での MySQL 5.7.21 インストーラのインストール グラフィック チュートリアル

推薦する

Javascriptを使用して滑らかな曲線を生成する方法

目次序文ベジェ曲線の紹介二次ベジェ曲線3次ベジェ曲線ベジェ曲線計算機能フィッティングアルゴリズム付録...

HTML/XHTML における img 画像タグの基本的な使用法の詳細な説明

画像タグは、Web ページに画像を表示するために使用されます。 HTML/XHTML 画像 <...

vsftpd ユーザーが ssh 経由でログインすることを禁止する方法

序文vsftp は使いやすく安全な FTP サーバー ソフトウェアです。システムユーザーまたは仮想ユ...

CSS ハック \9 と \0 は IE11\IE9\IE8 のハッキングには機能しない可能性があります

Web ページやフォームを設計するたびに、さまざまなブラウザ、特に IE ファミリの互換性の問題に悩...

Linux の ufw ファイアウォールの紹介

Linux のufw (Uncomplicated Firewall) を見て、ファイアウォールに変...

デザイン理論: コンテンツプレゼンテーションのための 10 のヒント

<br /> テキスト、記号、リンクの3つの側面に焦点を当て、主に中国語で、個人的な執筆...

Vue ソースコード学習でレスポンシブ性を実装する方法

目次序文1. レスポンシブシステムの重要な要素1. データの変更を監視する方法2. 依存関係を収集す...

VMware Tools を最初からインストールするための詳細な手順 (グラフィック チュートリアル)

VMware Tools は VMware 仮想マシンに付属するツールで、VirtualBox (...

Dockerを使用してブログサイトを素早く構築する方法の詳細な説明

目次1. 準備2. 展開プロセス3. アクセステストHalo は、ブログに慣れている学生に追加のオプ...

MySQL の自動増分主キーが使い果たされた場合の対処方法

面接では、次のようなシナリオを経験する必要があります。インタビュアー: 「MySQL を使用したこと...

MySQLインジェクションバイパスフィルタリング技術の概要

まず、GIF 操作を見てみましょう。ケース1: スペースがフィルタリングされるスペースの代わりに角括...

MySQL 8.0.21 無料インストール版 設定方法 グラフィックチュートリアル

MySQLをインストールする6つの手順(インストールパッケージのみがインストール場所を選択できます)...

Windows10システムにスーパーセットをインストールする手順

Superset は、エレガントなインターフェースとデータ テーブルに基づく動的なデータ生成を主な機...

Reactはページの透かし効果の全プロセスを実現します

目次序文1. 使用例2. 実施プロセス3. コンポーネントコード要約する序文1. cavans では...

MySQL のデッドロック チェックとデッドロック除去の例の詳細な説明

1. クエリプロセスプロセスリストを表示2. 対応するプロセスを照会し、IDを強制終了します。検証(...