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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL データをエクスポートおよびインポートするための HeidiSQL ツール
>>: Tomcat を IDEA にダウンロード、インストール、デプロイするチュートリアル (IDEA の 2 つのホット デプロイ設定方法付き)
目次1. 浅いコピーとはどういう意味ですか? 2. ディープコピーとはどういう意味ですか? 3. デ...
1. まず、お使いのマシンに応じて、MySQL 公式サイトから対応するデータベースをダウンロードしま...
この記事は、参考のためにMySQL 8.0.18のインストールと設定のグラフィックチュートリアルを記...
コンテナログを表示するまず、 docker run -it --rm -d -p 80:80 ngi...
まず、top のいくつかのフィールドの意味を紹介します。 VIRT:仮想メモリ使用量1. プロセスが...
この記事の例では、要素のマウスドラッグ効果を実現するためのvue+tsの具体的なコードを参考までに共...
現在、Nginx は、Web サービスを提供するために、Windows ベースの IIS と Lin...
序文vue3.0 が正式にリリースされて以来、多くの友人が vue3.0 に切り替えました。ここでは...
フォームは、動的な Web ページを実装するための主要な外部フォームです。フォームとフォーム フィー...
目次1. はじめに2. 本文2.1 単一列のソート2.2 複数の列を並べ替える2.3 ソート方法2....
目次序文質問オンラインソリューション序文この記事の内容は私がこの業界に入ったときのメモを元にしている...
1.ブラウザでmysqlを検索してダウンロードしてインストールしますアドレス: https://d...
最近、空港や駅でフライト情報を表示するものと似た大型スクリーンディスプレイのプロジェクトに取り組んで...
JSONデータはHTMLページ上に表示されフォーマットされます1. 表示効果図説明:すべてのキー値は...
リストは、類似または関連する一連の項目をリストするために使用されます。順序なしリスト(箇条書きリスト...