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 をモバイル デバイスに適応させる方法の例

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

推薦する

Centos7 で ZooKeeper3.4 ミドルウェアを構築するための一般的なコマンドの概要

1.ダウンロードして解凍する1. Zookeeperの紹介分散サービス フレームワークとして、Zoo...

MySQLスローログクエリの詳細な説明

遅いログクエリ機能スロー ログ クエリの主な機能は、設定された時間しきい値を超える SQL ステート...

JSONオブジェクトのキーを置き換える最良の方法

JSON (JavaScript Object Notation、JS Object Notatio...

JavaScript の絶妙なスネーク実装プロセス

目次1. HTML構造を作成する2. テーブルを作成する3. ヘビの頭と体を作る4. 食べ物を作る5...

PCとモバイルの適応の問題に対する迅速な解決策

Web ページを作成する場合、通常、コンピューターの画面サイズと携帯電話の画面サイズの違いなどの問題...

jsネイティブカルーセルプラグインの制作

この記事では、jsネイティブカルーセルプラグインの具体的なコードを参考までに共有します。具体的な内容...

JS を使用して Web ページのウォーターフォール レイアウトを実装する方法

目次序文:ウォーターフォールレイアウトとは何ですか?達成方法: 1. 画像を取得する2. 画像の帯域...

シンプルな画像切り替えを実現するJavaScript

この記事では、JavaScriptで簡単な画像切り替えを実現するための具体的なコードを参考までに紹介...

Zabbix を使用して Nginx/Tomcat/MySQL を監視する方法の詳細なチュートリアル

目次ZabbixはNginxを監視するZabbixはTomcatを監視するZabbixはMySQLを...

CSS カウンターとコンテンツの概要

コンテンツ プロパティは CSS 2.1 で導入され、:before および :after 疑似要素...

IDEA を使用して Tomcat を設定し、JSP ファイルを作成する方法

idea を使用して JSP ファイルを書き込む前に、jdk 環境 (ここでは説明しません) と対応...

docker mysqlの起動時に初期化SQLを実行する

1.Mysqlイメージを取得するdocker pull mysql:5.7 2. MySQLイメージ...

プロジェクトにおける CSS グリッドシステムの柔軟な使用方法の詳細な説明

序文CSS グリッドは通常、さまざまなフレームワークにバンドルされていますが、実際のビジネス ニーズ...

easycomモードでUNI-APPコンポーネントを呼び出す際に習得する必要がある実践的なスキル

この記事は議論の出発点となることを目的としています。詳細なドキュメントと easycom の仕様につ...

iframe に関するいくつかの発見と考察

この物語は、今日の予期せぬ発見から始まります。同社には複数のウェブサイトがある。友達リンクにはお互い...