Vue のドロップダウン ボックスのセカンダリ リンク効果を実装するためのサンプル コード

Vue のドロップダウン ボックスのセカンダリ リンク効果を実装するためのサンプル コード

1. 成果を達成する

ここに画像の説明を挿入

2. バックエンドから返されるデータ形式

「リスト」: [
      {
        "id": "1178214681118568449",
        "title": "バックエンド開発",
        "子供たち": [
          {
            "id": "1178214681139539969",
            「タイトル」: 「Java」
          },
          {
            "id": "1178585108407984130",
            「タイトル」: 「Python」
          },
          {
            "id": "1454645056483913730",
            "タイトル": "C++"
          },
          {
            "id": "1454645056731377666",
            "タイトル": "C#"
          }
        ]
      },
      {
        "id": "1178214681181483010",
        "title": "フロントエンド開発",
        "子供たち": [
          {
            "id": "1178214681210843137",
            "タイトル": "JavaScript"
          },
          {
            "id": "1178585108454121473",
            "タイトル": "HTML/CSS"
          }
        ]
      },
      {
        "id": "1178214681231814658",
        "タイトル": "クラウドコンピューティング",
        "子供たち": [
          {
            "id": "1178214681252786178",
            「タイトル」: 「Docker」
          },
          {
            "id": "1178214681294729217",
            「タイトル」: 「Linux」
          }
        ]
      },
      {
        "id": "1178214681324089345",
        "title": "システム/運用と保守",
        "子供たち": [
          {
            "id": "1178214681353449473",
            「タイトル」: 「Linux」
          },
          {
            "id": "1178214681382809602",
            「タイトル」: 「Windows」
          }
        ]
      },
      {
        "id": "1178214681399586817",
        "title": "データベース",
        "子供たち": [
          {
            "id": "1178214681428946945",
            「タイトル」: 「MySQL」
          },
          {
            "id": "1178214681454112770",
            「タイトル」: 「MongoDB」
          }
        ]
      },
      {
        "id": "1178214681483472898",
        "タイトル": "ビッグデータ",
        "子供たち": [
          {
            "id": "1178214681504444418",
            「タイトル」: 「Hadoop」
          },
          {
            "id": "1178214681529610242",
            「タイトル」:「スパーク」
          }
        ]
      },
      {
        "id": "1178214681554776066",
        "タイトル": "人工知能",
        "子供たち": [
          {
            "id": "1178214681584136193",
            「タイトル」: 「Python」
          }
        ]
      },
      {
        "id": "1178214681613496321",
        "title": "プログラミング言語",
        "子供たち": [
          {
            "id": "1178214681626079234",
            「タイトル」: 「Java」
          }
        ]
      }
    ]

データ形式は上記と同じではない場合があります。前回の記事では、このデータ形式をツリー コントロールで使用しましたが、ここではセカンダリ リンケージに配置しています。

3. Vueページで

 <!-- カテゴリ TODO -->
      <el-form-item label="コースカテゴリ">
        <!--第 1 レベルの分類-->
        <el-選択
          v-model="コース情報.subjectParentId"
          placeholder="第 1 レベルの分類" @change="subjectLevelOneChanged">
          <el-オプション
            v-for="subjectOneList 内の subject"
            :key="件名.id"
            :label="件名.タイトル"
            :value="件名.id"/>
        </el-select>

        <!-- セカンダリ カテゴリ -->
        <el-select v-model="courseInfo.subjectId" placeholder="選択してください">
          <el-オプション
            v-for="subjectTwoList 内の subject"
            :key="件名.値"
            :label="件名.タイトル"
            :value="件名.id"/>
        </el-select>
      </el-form-item>
'@/api/edu/course' からコースをインポートします
'@/api/edu/subject' から subject をインポートします。
エクスポートデフォルト{
  データ() {
    戻る {
      saveBtnDisabled: false, // 保存ボタンは無効になっていますか? courseInfo:{
        タイトル: ''、
        subjectId: '', //セカンダリカテゴリID
        subjectParentId:'', //第 1 レベルの分類 ID
        teacherId: '', //教師ID
        lessonNum: 0, //レッスンの説明: '', //コース紹介カバー: '/static/01.jpg', //デフォルトのカバー画像価格: 0
      },
      teacherList:[], //講師データをすべてカプセル化 subjectOneList:[], //第1レベルの分類 subjectTwoList:[] , //第2レベルの分類 BASE_API: process.env.BASE_API //インターフェースAPIアドレス}
  },
  created() { //ページレンダリング前に実行 //すべての講師を初期化 this.getListTeacher()
    //第1レベルの分類を初期化します this.getOneSubject()
  },
  メソッド: {
    //第 1 レベルのカテゴリをクリックすると変更イベントがトリガーされ、対応する第 2 レベルのカテゴリが表示されます subjectLevelOneChanged(value){
        //値は第1レベルの分類のID値です//まず、第1レベルと第2レベルを含むすべてのカテゴリを走査します for (var i = 0; i <this.subjectOneList.length; i++) {
        //各第1レベルの分類 var oneSubject=this.subjectOneList[i]
        //判断: すべての第 1 レベル カテゴリ ID がクリックされた第 1 レベル カテゴリ ID と同じかどうか if(value===oneSubject.id){ //=== つまり、値と型を比較します //第 1 レベル カテゴリからすべての第 2 レベル カテゴリを取得します this.subjectTwoList=oneSubject.children
          //二次分類ID値をクリアします this.courseInfo.subjectId=''
        }
      }
    },
    //第1レベルのカテゴリをすべてクエリする getOneSubject(){
      件名.getSubjectList()
      .then(応答=>{
        this.subjectOneList=レスポンスデータリスト
      })
    }
  }
}
</スクリプト>

主なアイデアは、第 1 レベルのドロップダウン ボックスでクリック イベントが発生すると、第 1 レベルのドロップダウン ボックスの ID 値を取得し (必ずしもここでの ID 値である必要はありません)、すべてのデータを含む第 1 レベルのカテゴリ コレクションを走査して、現在のクリック イベントによって選択された第 1 レベルのカテゴリと同じ ID 値を持つオブジェクトを見つけ、その children 属性 (my children はバックエンドの第 2 レベルのカテゴリのコレクションです) をデータ属性の第 2 レベルのカテゴリ配列オブジェクト subjectTwoList に割り当てるというものです。
ここでは、バックエンドですべてのデータを一度に取得し、フロントエンドでトラバースして解決しました。もちろん、シングルクリックイベントの実行ロジックを変更することもできます。別の方法としては、選択キーとドロップダウンボックスキーを使用して、バックエンドのすべてのセカンダリカテゴリを毎回チェックし、見つかったセカンダリカテゴリを2番目のドロップダウンボックスに割り当てる方法があります。ただし、この方法は少し遅いですが、実装方法でもあります。

これで、Vue を使用してドロップダウン ボックスの二次リンク効果を実現する方法についての記事は終了です。Vue ドロップダウン ボックスの二次リンクに関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueのドロップダウンボックスのテキストとオプション値を取得する
  • Vue で vant ドロップダウン ボックス van-dropdown-item を使用するとタイトルの値が変更されない問題を解決する
  • vue+Element のテーブルは編集可能です (ドロップダウン ボックスを選択)
  • 複数選択をサポートする vuejs2.0 の動的バインディング ドロップダウン ボックスの選択の詳細な説明
  • Vueで実装されたドロップダウンボックス機能の例
  • 省と市の二次連携を実現するためのVueとiViewのサンプルコード
  • Vue はセカンダリ リンケージの第 2 レベルのデフォルトを選択し、最初のオプション値の例を選択します。
  • Vue 学習 mintui ピッカー セレクターで州と市の二次リンク例を実現

<<:  rem をモバイル デバイスに適応させる方法の例

>>:  ウェブデザインの経験とスキルの概要

推薦する

Spring Boot 2.4 の新機能、ワンクリックビルド、Docker イメージプロセスの詳細説明

背景開発プロセス中に Docker コンテナ化をサポートするために、通常は Maven を使用してコ...

Docker を使用してイメージをローカルにパッケージ化してデプロイする方法

初めてDockerを使用してイメージをローカルにパッケージ化してデプロイするまず、私のラップトップシ...

Vueはページを更新するために3つの方法を使用する

プロジェクトを作成しているときに、ユーザーがアクションを実行し、特定の状態を変更し、ページを更新して...

HTML 学習ノート - HTML 構文の詳細な説明 (必読)

1. HTML マークアップ言語とは何ですか? HTML は、Web ページの情報を表すマークアッ...

JavaScript で右クリック メニューを統合する layim のサンプル コード

目次1. 効果の実証2. 実装チュートリアル3. 最後に、完全なコードを添付します4. その他の右ク...

スタイル属性 (element.style) で定義されたインライン スタイルを削除する方法

Magento を頻繁に変更する場合、element.style に遭遇することがあります。 これは...

webpackが静的リソースキャッシュを実装する方法

目次導入複数の異なるハッシュを区別するハッシュチャンクハッシュコンテンツハッシュjs キャッシュの実...

MySQL コール初心者が犯しがちな 11 の間違いのまとめ

序文セキュリティ部門からSQLインジェクションやXSS攻撃の脆弱性などに関する警告メールを頻繁に受け...

CSS3 はクールな 3D 回転遠近法効果を実現します

CSS3はクールな3D回転パースペクティブを実現します3D アニメーション効果はますます人気が高まっ...

HTMLでのラジオ値の取得、割り当て、登録の詳細な説明

1. ラジオのグループ化名前が同じであれば、それらはグループであり、つまり、次のようにグループ内で選...

Windows 10 1903 エラー 0xc0000135 の解決方法 [推奨]

Windows 10 1903 は、2019 年に Microsoft がリリースした Windo...

JavaScript と JQuery フレームワークの基本チュートリアル

目次1. JS オブジェクトDOM –1、機能–2、テスト3. jQuery –1. 概要–2、使用...

Linux システムによって報告される xfs_vm_releasepage 警告問題に対処する方法

問題の説明最近、いくつかのマシンで、一日のさまざまな時間に次の警告メッセージが表示されました。 3月...

JavaScript で 9 グリッドのモバイル パズル ゲームを実装

この記事では、Jiugonggeモバイルパズルゲームを実装するためのJavaScriptの具体的なコ...

Docker は次の「Linux」になれるか?

Linux オペレーティング システムは過去 20 年間にわたってデータ センターに革命をもたらし...