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

推薦する

HTML 要素の高さ、offsetHeight、clientHeight、scrollTop などの詳細な説明。

要素に関するいくつかの属性フロントエンドの日常的な開発では、一部のページのプロパティを取得または監視...

JavaScript におけるイベント バブリング メカニズムの詳細な分析

バブリングとは何ですか? DOM イベント フローには、イベント キャプチャ ステージ、ターゲット ...

表示または可視性によってHTML要素を非表示にする

場合によっては、特定の条件に基づいて Web ページ内の HTML 要素を表示するか非表示にするかを...

Windows Server 2019 IIS10.0+PHP(FastCGI)+MySQL 環境構築チュートリアル

準備1. 環境の説明:オペレーティング システム: Windows Server 2019 PHP ...

Docker での Redis の永続ストレージの詳細な説明

この章では、dockerの下にあるSpring BootプロジェクトでRedisを操作し始めます。準...

非常に実用的なMySQL関数の包括的な概要、詳細な例の分析チュートリアル

目次1. MySQLの関数の説明2. 単行関数の分類3. キャラクター機能4. 数学関数5. 日付と...

ファイルが存在するかどうかを判断する JavaScript サンプルコード

1. ビジネスシナリオ最近はファイルのアップロードやダウンロードに関する開発をしています。ダウンロー...

webpack イメージを base64 に変換する例

url-loader をダウンロード 糸を追加 -D URLローダー モジュール: { ルール: {...

CSSカウンター関連属性の学習の詳細な説明

CSS カウンター属性はほぼすべてのブラウザ (IE8 を含む) でサポートされていますが、あまり使...

包括的なウェブサイト評価ソリューション

<br />「XXXのウェブサイトを見てみませんか?」といった質問をされることもあります...

プロジェクトを素早く構築するためのvite+vue3.0+ts+element-plusの実装

目次バイト機能使用環境プロジェクトを構築する構成vite.config.ts tsconfig.js...

Windows 10 に付属する仮想マシンのネットワークを設定するための詳細な手順 (グラフィック チュートリアル)

1. サーバー ホストをクリックし、右側の操作リストで [仮想スイッチ管理] をクリックして、仮想...

Kali Linux Vmware 仮想マシンのインストール (図とテキスト)

準備: 1. VMwareワークステーションソフトウェアをインストールする2. Kali Linux...

JSの基本概念の詳細な紹介

目次1. JSの特徴1.1 マルチパラダイム1.2 説明1.3 シングルスレッド1.4 ノンブロッキ...

Docker実行コンテナが作成状態にある問題についての簡単な説明

最近の問題としては、次のような現象があります。システムには、docker run コマンドを継続的に...