Vueは、サイドナビゲーションバーをタブページに関連付けるサンプルコードを実装します。

Vueは、サイドナビゲーションバーをタブページに関連付けるサンプルコードを実装します。

テクノロジースタック

  • サイドバー用
  • Antdtabは要素を使用します

効果

画像の説明を追加してください

<テンプレート>
	  <div class="メインカード">
          <el-行>
            <el-col :span="3">
              <div class="menu-all">
                <div class="menu-head">
                  <span class="menu-head-title">倉庫管理</span>/<span class="menu-head-title" @click="goBack"
                    >大画面</span>
                  >
                </div>
                <!-- <div class="menu-body">
                <div class="menu-item" @click="openTabs(item)" v-for="menuItems 内の項目" :key="item">
                  <i class="el-icon-s-home" v-if="item.value === '01'"></i>{{ item.name }}
                </div>
              </div> -->
                <a-メニュー
                  モード="インライン"
                  テーマ="ダーク"
                  :openKeys="オープンキー"
                  v-model="選択されたキー"
                  @openChange="onOpenChange"
                >
                  <a-sub-menu v-for="メニュー項目内の項目" :key="item.value">
                    <span スロット="タイトル"
                      ><a-icon type="appstore" /><span>{{ item.name }}</span></span
                    >
                    <メニュー項目
                      v-for="item.children 内の childrenItem"
                      :key="子アイテム.値"
                      @click="addTabs(childrenItem)"
                      >{{ childrenItem.name }}
                    </a-メニュー項目>
                  </a-サブメニュー>
                </a-メニュー>
              </div>
            </el-col>
            <el-col :span="21">
              <el-行>
                <el-col :span="24">
                  <div>
                    <el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab">
                      <el-tab-pane v-for="編集可能なタブ内の項目" :key="item.name" :label="item.title" :name="item.name">
                        <コンポーネント :is="item.content"></コンポーネント>
                      </el-tab-pane>
                    </el-tabs>
                  </div>
                </el-col>
              </el-row>
            </el-col>
          </el-row>
        </div>
</テンプレート>
<スクリプト>
	エクスポートデフォルト{
		データ(){
			戻る {
				   openKeys: [], //第一レベルメニューの折りたたみと展開を制御して、第一レベルメニューの値を保存します
      SelectedKeys: '', //セカンダリメニューを制御して、セカンダリメニューの値を強調表示して保存します
      //サイドナビゲーションメニュー配列 menuItems: [
        {
          名前: 「受信レポートと送信レポート」
          値: '0'、
          子供たち: [
            {
              名前: 「受注数量レポート」
              値: '01'、
              コンテンツ: () => import('@/views/main/index/qtyReportIndex.vue'),
            },
            {
              名前: '保管するユニット数に関するレポート'、
              値: '02'、
              コンテンツ: () => import('@/views/main/index/qtyReportIndexQty.vue'),
            },
            {
              名前: 「出荷予定の注文数量レポート」
              値: '03'、
              コンテンツ: () => import('@/views/main/index/handoverReportIndex.vue'),
            },
            {
              名前: 「出荷予定ユニット数レポート」
              値: '04'、
              コンテンツ: () => import('@/views/main/index/handoverReportIndexQty.vue'),
            },
          ]、
        },
        {
          名前: 「予測」、
          値: '1'、
          子供たち: [
            {
              名前: 「到着登録」
              値: '11'、
              コンテンツ: () => import('@/views/main/index/asnHdrDockIndex.vue'),
            },
            {
              名前:「倉庫利用率」
              値: '12',
              コンテンツ: () => import('@/views/main/index/whUteIndex.vue'),
            },
            {
              名前: 「倉庫内の在庫」
              値: '13',
              コンテンツ: () => import('@/views/main/index/imOdsStorageIndex.vue'),
            },
          ]、
        },
        {
          名前: 'インジケーター'、
          値: '2'、
          子供たち: [
            {
              名前: 「単一倉庫集荷率」
              値: '201',
              コンテンツ: () => import('@/views/main/index/singleWhDeliveryScaleIndex.vue'),
            },
            {
              名前: 「倉庫内の輸送時間」
              値: '202',
              コンテンツ: () => import('@/views/main/index/transitDurationInWhIndex.vue'),
            },
            {
              名前: 'SN の繰り返し'、
              値: '203',
              コンテンツ: () => import('@/views/main/index/dwExceptionBarcodeIndex.vue'),
            },
            {
              名前: 「日次在庫リスト」
              値: '204',
              コンテンツ: () => import('@/views/main/index/inventoryRqIndex.vue'),
            },
            {
              名前: 「データベース転送インジケーター監視」
              値: '205',
              コンテンツ: () => import('@/views/main/index/transferIndexIndex.vue'),
            },
            {
              名前: 「ピッキング場所分析概要レポート」
              値: '206',
              コンテンツ: () => import('@/views/main/index/pickingByLocSumIndex.vue'),
            },
            {
              名前: 'レポートの概要を読み込んでいます',
              値: '207',
              コンテンツ: () => import('@/views/main/index/loadingSummaryIndex.vue'),
            },
            {
              名前: '送信SNエラー率'、
              値: '208',
              コンテンツ: () => import('@/views/main/index/dwBarcodeErrorRptIndex.vue'),
            },
            {
              名前: 「ピッキング場所分析の詳細」
              値: '209',
              コンテンツ: () => import('@/views/main/index/dwPickFxmxIndex.vue'),
            },
            {
              名前: 'バッチピッキングに基づかない保管エリアディメンション'、
              値: '210',
              コンテンツ: () => import('@/views/main/index/notPickingByBatchIndex.vue'),
            },
          ]、
        },
      ]、
      editableTabsValue: '', //タブページ上で現在アクティブな項目
      editableTabs: [], //タブページ配列 }
		},
		方法:{
	// 他のページからホームページにジャンプしてタブページを開くために使用されるメソッド // goTable(item) {
     // this.openKeys = [item.value.substring(0, 1)]
     // this.SelectedKeys = item.value
     // this.$store.commit('updateHomeOrIndexSwitch', false)
     // this.openTabs(アイテム)
    //,
		タブを追加(アイテム) {
      onOff を false にします。
      this.editableTabs.forEach((x) => {
        if (x.name == item.name) {
           this.editableTabsValue = アイテム名
           オンオフ=true
           戻る;
        }
      })
      if(!onOff){
      this.editableTabs.push({
        タイトル: アイテム名、
        名前: アイテム名、
        コンテンツ: アイテム.コンテンツ、
      })
      this.editableTabsValue = アイテム名
      }
    },
    //タブページを閉じてトリガーする targetName = item.name
    削除タブ(ターゲット名) {
      タブを this.editableTabs とします
      activeName = this.editableTabsValue とします
      アクティブ名 === ターゲット名の場合 {
        tabs.forEach((タブ、インデックス) => {
          if (tab.name === targetName) {
            nextTab = tabs[index + 1] || tabs[index - 1]とします
            if (次のタブ) {
              アクティブ名 = 次のタブ名
            } それ以外 {
              this.openKeys = []
              this.SelectedKeys = ''
            }
          }
        })
      }
      this.editableTabsValue = アクティブ名
      this.editableTabs = tabs.filter((tab) => tab.name !== targetName)
    },
		},
		時計:{
			    編集可能なタブ値(val) {
      this.menuItems.forEach((メニュー項目) => {
        メニュー項目の子の場合
          メニュー項目.children.forEach((childrenItem) => {
            if (childrenItem.name === val) {
              this.openKeys = [childrenItem.value.substring(0, 1)]
              this.SelectedKeys = childrenItem.value
              戻る
            }
          })
        }
      })
    },
		}
	}
</スクリプト>

分析する

このコンポーネント セットは、単一の要素フレームワークでは実装できません。サイド ナビゲーション バーでは、折りたたみ、強調表示、メニュー グループのパラメーターを制御する必要があります。メニュー グループの折りたたみと展開を制御する要素のナビゲーション メニューのパラメーターは関数 @open control であるため、コードを通じてメニュー グループの展開と折りたたみを制御する方法がないため、フレームワーク全体でそのような関数を作成して記録します。

ここに画像の説明を挿入

これで、Vue のサイドナビゲーションバーとタブページの関連付けの実装のサンプルコードに関するこの記事は終了です。Vue のサイドナビゲーションバーとタブページの関連付けに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueはタブナビゲーションバーを実装し、左右のスライド機能をサポートしています
  • vue elementUIはタブを使用してナビゲーションバーにリンクします
  • Vue カスタム下部ナビゲーションバー タブバー実装コード
  • モバイル慣性スライド&リバウンドVueナビゲーションバーコンポーネントly-tabを書く

<<:  ウェブデザイナーが注意すべき 43 のウェブデザインの間違い

>>:  iframe の src を about:blank に設定した後の詳細

推薦する

MySQL双方向バックアップの実装方法

MySQL 双方向バックアップはマスター-マスター バックアップとも呼ばれ、両方の MySQL サー...

mysql5.6 以前のデータベースで json をクエリする方法

MySQLにデータを保存するとき、乱雑であまり使用されないデータがJSONフィールドに投げ込まれるこ...

読めばわかるVueの8つのヒント

1. v-forでは常に:keyを使用するデータを操作する必要があるときにプログラムを一定かつ予測可...

デザイン理論:テキスト表現とユーザビリティ

<br />テキストデザインでは、通常、テキストのレイアウト、つまりテキストをより美しく...

VMware ESXi6.7 の簡単なセットアップ(画像とテキスト付き)

1. VMware vSphere の概要VMware vSphere は、業界をリードする最も信...

vueはel-tableの列幅の適応を完璧に実現します

目次背景技術的ソリューション具体的な実装要約する背景Element UI は、PC で人気の Vue...

MySQLデータベースでゼロ値を含む日付の問題について簡単に説明します

デフォルトでは、MySQL は日付に 0 値を挿入することを受け入れますが、実際には日付の 0 値に...

コーディングスキルを向上させるためのJavaScriptのヒント

目次1. 一意の値をフィルタリングする2. 短絡評価2.1 シナリオ例3. ブール変換4. 文字列を...

Mysql 8.0.17 winx64バージョンのインストール中に発生した問題を解決する

1. my.iniファイルを手動で作成して追加する # クライアントセクション # --------...

フロントエンドコンポーネント化の基礎知識を詳しく解説

目次コンポーネントの基本概念オブジェクトとコンポーネントの違い成分属性属性とプロパティ属性:財産:ク...

Oracle Rownum 書き込みに似た MySQL の詳細な例

Rownum は、Oracle での独自の書き込み方法です。Oracle では、rownum を使用...

jQueryはショッピングカート機能を実装します

この記事の例では、ショッピングカート機能を実装するためのjQueryの具体的なコードを参考までに共有...

SQL 挿入文の書き方の説明

方法 1: INSERT INTO t1(field1,field2) VALUE(v001,v00...

Ubuntu での CUDA と CUDNN のインストールとアンインストールの実装

目次序文グラフィックドライバーをインストールするCUDAをアンインストールするCUDAをインストール...

CSS3のall属性の使い方を理解する

1. 互換性以下のように表示されます。 互換性は問題ありません。IE を除き、他のブラウザは基本的に...