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 つのホット デプロイ設定方法付き)

推薦する

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

MySQL 8.0圧縮パッケージのインストール方法、詳細は次のとおりです知らせ:オペレーティング シ...

初心者のためのWebページ作成: HTMLのハイパーリンクAタグの使い方を学ぶ

ハイパーリンク a タグはリンク ポイントを表し、英語の単語「anchor」の略語です。その機能は、...

Linuxでファイルを削除してもスペースが解放されない問題の対処方法

問題の背景業務システムのサーバ監視システムからディスク使用率が90%に達したという早期警告通知が来た...

MySQLのパスワードを忘れた場合の対処方法

MySQL パスワードを忘れた場合の解決策: [root@localhost ~]# mysql -...

HTMLは実際にはいくつかの重要なタグを学ぶアプリケーションです

「これは革命になるだろう」という記事が出たあと。業界の皆様に認知され、もちろん内外からの評価もいただ...

DockerコンテナにNFS共有ディレクトリをマウントする実装

以前、https://www.jb51.net/article/205922.htm で、Docke...

MySQL InnoDB の重要なコンポーネントの概要

Innodbには以下のコンポーネントが含まれています1. innodb_buffer_pool:これ...

PSを使用して2分でxhtml+cssウェブサイトのホームページを作成します

xhtml+css のウェブサイト再構築、ウェブ標準などについては、記事が多すぎるので繰り返しません...

Kafka の Docker デプロイメントと Spring Kafka 実装

この記事は主にDockerによるKafkaのデプロイとSpring Kafkaの実装について紹介しま...

ウェブページ内の 2 つのボックス モデル (W3C ボックス モデル、IE ボックス モデル)

Web ページ ボックス モデルには 2 種類あります。 1: 標準 W3C ボックス モデル。2:...

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

MySQL 5.7.13 Mac用インストールチュートリアル、非常に詳細で、以下のように記録されてい...

MySQLの基本操作を詳しく解説(第2部)

序文この記事には1. データベースのいくつかの主要な制約2. テーブル間の関係制約:主キー制約: 機...

Linuxで静的ネットワーク接続を構成する方法

Linux システムのネットワーク接続を構成するのは難しい場合があります。幸いなことに、多くの新しい...

MySQL 5.7 でルートパスワードを忘れた後に変更する方法の詳細なチュートリアル

序文長い間、MySQL のアプリケーションおよび学習環境は MySQL 5.6 以前のバージョンであ...

MySQL 8.0 の新しいリレーショナル データベース機能の詳細な説明

序文MySQL 8.0 の最新バージョンは 8.0.4 rc であり、正式版は近日中にリリースされる...