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 インストーラのインストール グラフィック チュートリアル

推薦する

CentOS 8が利用可能になりました

CentOS 8 が利用可能になりました! CentOS 8 と RedHat Enterprise...

CentOSにPHP+Apache+MySQLのサーバー環境をインストールして構築する

Yum (フルネームは Yellow dog Updater, Modified) は、Fedora...

マークアップ言語 - タイトル

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

geo モジュールを使用して Nginx でホワイトリストを設定する例

元の構成: http { ...... limit_conn_zone $binary_remote...

MySQL データベースの高度なクエリとマルチテーブルクエリ

MySQL マルチテーブルクエリワークシートを追加する -- ユーザーテーブル (ユーザー) テーブ...

Js クラスの構築と継承のケースの詳細な説明

JS のクラスの定義や継承は本当に多様なので、別のノートブックを開いて記録しておきます。意味オブジェ...

HTML テーブルタグチュートリアル (32): セルの水平方向の配置属性 ALIGN

水平方向では、セルの配置を左、中央、右に設定できます。基本的な構文<TD ALIGN=&quo...

フロントエンドAIカットのコツ(体験談)

AI 画像の切り取りは PS と連携する必要があります。まず、スライスするレイヤーを選択し、それを...

MySQL スケジュールタスク (EVENT イベント) を詳細に設定する方法

目次1. イベントとは何ですか? 2. 「イベント」機能を有効にする1. 機能が有効になっているかど...

MySQL の時間差関数 TIMESTAMPDIFF と DATEDIFF の使用

時間差関数 TIMESTAMPDIFF と DATEDIFF の使用SQL ステートメント、特にスト...

MySQL 8.0 の新機能の落とし穴と解決策についての簡単な説明 (要約)

1. ユーザーを作成して承認するMySQL 8.0 では、ユーザーの作成と認証が以前とは異なります...

CentOS8 で MySQL 8.0 をインストールしてデプロイする方法

MySQL 8 の公式バージョン 8.0.11 がリリースされました。公式発表によると、MySQL ...

DockerのIDEA構成プロセス

IDEA は Java で最も一般的に使用されている開発ツールであり、Docker は最も人気のある...

MySQL データベース開発仕様 [推奨]

最近、問題のある新しい SQL が本番データベースに入力される数を最小限に抑えるために、開発仕様を整...

MySQL の binlog ログと、binlog ログを使用してデータを回復する方法を説明します。

ご存知のとおり、binlog ログは MySQL データベースにとって非常に重要です。万が一、データ...