vue+iviewのメニューとタブの連携方法

vue+iviewのメニューとタブの連携方法

Vue+iview メニューとタブのリンク

現在、vue+iview を使用してバックエンド管理システムを開発しています。クリックしたときに左側のメニューの右側にあるタブとコンテンツに対応する変更を加えたいと思っています。

しかし、長い間ルーティングに取り組んできましたが、まだこの機能を実現できていません。

vue+iview を使い始めた当初は、iview-admin が直接使用できることや、レイアウトなどがすぐに使える状態になっていることを知りませんでした。しかし、私はすでに長い間デモを書いていたので、諦めることができませんでした。

1. iviewのメニューとタブをレイアウトに使用し、これら2つのコンポーネントをメインページに配置します。

メニューとタブのデータは同じで、スタイルを関連付ける必要があるため、状態管理には vuex を使用できます。管理する必要があるデータと状態変数は state に記述し、操作アクションは mutations に設定し、一部の動作は actions で listen します (私のメニューには拡大縮小部分がないため、actions は使用しません)

2.レイアウトが完了したら、メニューにクリックイベントを追加します。

on-select では、まず、mutations にタブ変更イベントを登録します。左のメニューがクリックされたら、タブに既にタブがあるかどうかを確認し、isExist=false を設定します。存在する場合は、isExist が true に変更されます。存在しない場合は、タブがトラバースする配列にメニュー相対インデックス データを追加します。

変異タイプ

突然変異の場合:

メニュー コンポーネント内のイベントは次のとおりです。

まず、タブ コンポーネントでページのデフォルト ルートを設定します。

次にイベントを追加します。

iview+Vue マルチレベルメニューリンク

3 レベルのメニュー リンクを可能な限り愚かな方法で作成しました。

<テンプレート>
  <div>
    <v-model="whereMap.model1" を選択
            スタイル="幅:200px"
            @on-change="getSecond">
      <オプション v-for="リスト1内の項目"
              :value="アイテムID"
              :key="item.id">{{ item.label }}</オプション>
    </選択>
    <v-model="whereMap.model2" を選択
            スタイル="幅:200px"
            @on-change="getThird">
      <オプション v-for="リスト2の項目"
              :value="アイテムID"
              :key="item.id">{{ item.label }}</オプション>
    </選択>
    <v-model="whereMap.model3" を選択
            スタイル="幅:200px">
      <オプション v-for="リスト3内の項目"
              :value="アイテムID"
              :key="item.id">{{ item.label }}</オプション>
    </選択>
    <ボタンクラス="search-btn"
            タイプ="デフォルト"
            @click="searchClear">クリア</Button></div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
  データ () {
    戻る {
      データテスト: {
        l1: [
          {
            id: '猫',
            ラベル: '猫'
          },
          {
            id: '犬',
            ラベル: '犬'
          }
        ]、
        l2: {
          猫: [{ id: 'sc', label: '子猫' }, { id: 'bc', label: '大きな猫' }],
          犬: [{ id: 'sd', label: '子犬' }, { id: 'bd', label: '大型犬' }]
        },
        l3: {
          sc: [{ id: 'sc1', label: '小さな猫' }, { id: 'sc2', label: '小さなオレンジ色の猫' }],
          bc: [{ id: 'bc1', label: '大きなトラ猫' }, { id: 'bc2', label: '大きなオレンジ色の猫' }]
        }
      },
      リスト1: [],
      リスト2: [],
      リスト3: [],
      マップ: {
        モデル1: ''、
        モデル2: ''、
        モデル3: ''
      }
    }
  },
  マウント(){this.init()}、
  作成された(){
    この.init()
  },
  メソッド: {
    初期化(){
      this.list1 = this.datatest.l1
    },
    getSecond(val) {
      this.list2 = this.datatest.l2[値]
    },
    getThird (値) {
 
      this.list3 = this.datatest.l3[値]
    },
    検索クリア() {
      コンソールログ(this.whereMap)
      this.whereMap = {};
      this.list2 = [];
      this.list3 = [];
    }
  }
}
</スクリプト>

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

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

<<:  MySQL データをエクスポートおよびインポートするための HeidiSQL ツール

>>:  Tomcat を IDEA にダウンロード、インストール、デプロイするチュートリアル (IDEA の 2 つのホット デプロイ設定方法付き)

推薦する

JS のディープコピーとシャローコピーの詳細

目次1. 浅いコピーとはどういう意味ですか? 2. ディープコピーとはどういう意味ですか? 3. デ...

CentOS7にMySQL 8.0.26をインストールする手順

1. まず、お使いのマシンに応じて、MySQL 公式サイトから対応するデータベースをダウンロードしま...

MySQL 8.0.18 のインストールと設定方法のグラフィックチュートリアル

この記事は、参考のためにMySQL 8.0.18のインストールと設定のグラフィックチュートリアルを記...

Dockerコンテナのログ分析

コンテナログを表示するまず、 docker run -it --rm -d -p 80:80 ngi...

Linux で top コマンドを使用する際のヒント

まず、top のいくつかのフィールドの意味を紹介します。 VIRT:仮想メモリ使用量1. プロセスが...

vue+tsは要素のマウスドラッグの効果を実現します

この記事の例では、要素のマウスドラッグ効果を実現するためのvue+tsの具体的なコードを参考までに共...

複数のドメイン名に対する Nginx リバース プロキシを使用した HTTP および HTTPS サービスの実装

現在、Nginx は、Web サービスを提供するために、Windows ベースの IIS と Lin...

レスポンシブ原則と Vue2.0/3.0 の違いについての簡単な分析

序文vue3.0 が正式にリリースされて以来、多くの友人が vue3.0 に切り替えました。ここでは...

HTMLフォームタグチュートリアル(1):

フォームは、動的な Web ページを実装するための主要な外部フォームです。フォームとフォーム フィー...

MySQL での order by の使用に関する詳細

目次1. はじめに2. 本文2.1 単一列のソート2.2 複数の列を並べ替える2.3 ソート方法2....

エコー後に要素編集フォームel-radioが選択できない問題を解決します

目次序文質問オンラインソリューション序文この記事の内容は私がこの業界に入ったときのメモを元にしている...

mysql8.0.20 のダウンロードとインストールおよび発生した問題 (図とテキスト)

1.ブラウザでmysqlを検索してダウンロードしてインストールしますアドレス: https://d...

MySQLの指定順序ソートクエリについての簡単な説明

最近、空港や駅でフライト情報を表示するものと似た大型スクリーンディスプレイのプロジェクトに取り組んで...

HTML ページで JSON データを表示およびフォーマットする方法

JSONデータはHTMLページ上に表示されフォーマットされます1. 表示効果図説明:すべてのキー値は...

XHTML 入門チュートリアル: リストタグの使用

リストは、類似または関連する一連の項目をリストするために使用されます。順序なしリスト(箇条書きリスト...