VueとElement-UIを使って多階層連携ドロップダウンボックス機能を実装する方法

WBOY
リリース: 2023-07-20 23:43:48
オリジナル
3683 人が閲覧しました

Vue と Element-UI を使用してマルチレベル リンク ドロップダウン ボックス機能を実装する方法

はじめに:
Web 開発では、マルチレベル リンク ドロップダウン ボックスは一般的な対話方法です。 。ドロップダウン ボックスでオプションを選択すると、後続のドロップダウン ボックスの内容を動的に変更できます。この記事では、Vue と Element-UI を使用してこの機能を実装する方法とコード例を紹介します。

1. 準備
まず、Vue と Element-UI がインストールされていることを確認する必要があります。次のコマンドでインストールできます:

npm install vue
npm install element-ui
ログイン後にコピー

2. データの準備
マルチレベル連携ドロップダウン ボックスを実装するには、対応するデータを準備する必要があります。自動車のブランドと車種のデータ コレクションがあるとします。データ構造は次のとおりです:

brands: [
    {
        id: 1,
        name: '奥迪',
        models: [
            {
                id: 1,
                name: 'A4'
            },
            {
                id: 2,
                name: 'A6'
            }
        ]
    },
    {
        id: 2,
        name: '宝马',
        models: [
            {
                id: 3,
                name: 'X3'
            },
            {
                id: 4,
                name: 'X5'
            }
        ]
    }
]
ログイン後にコピー

3. Vue コンポーネントの作成
Cascader という名前の Vue コンポーネントを作成して、マルチレベル リンケージ ドロップダウン ボックス機能を実装できます。コードは次のとおりです。

<template>
  <div>
    <el-cascader
      :options="brands"
      v-model="selectedValues"
      @change="handleChange"
      :props="{ value: 'id', label: 'name', children: 'models' }"
    ></el-cascader>
  </div>
</template>

<script>
export default {
  data() {
    return {
      brands: [...], // 编辑为上面提到的数据结构
      selectedValues: []
    };
  },
  methods: {
    handleChange(value) {
      console.log(value);
    }
  }
};
</script>
ログイン後にコピー

上記のコードでは、Element-UI の Cascader コンポーネントを使用します。 options 属性をブランドに設定することで、車のブランド データをドロップダウン ボックスに渡します。 v-model ディレクティブは、ユーザーが選択した値を双方向にバインドするために使用されます。 @change イベントは、ユーザーの選択の変更を監視できます。 handleChange メソッドでは、ユーザーが選択した値を処理できます。

4. コンポーネントのレンダリング
コンポーネントをページにレンダリングするには、Vue インスタンスに Cascader コンポーネントを導入して登録する必要があります。コードは次のとおりです:

import Vue from 'vue';
import Cascader from './Cascader.vue';

new Vue({
  render: (h) => h(Cascader)
}).$mount('#app');
ログイン後にコピー

5. 実用的なアプリケーション
上記のコードは単なる例であり、実際のアプリケーションでは、選択されたブランドに従って、対応する車種を動的にロードする必要がある場合があります。ユーザー。完全な例のコードは次のとおりです。

<template>
  <div>
    <el-cascader
      :options="brands"
      v-model="selectedValues"
      @change="handleChange"
      :props="{ value: 'id', label: 'name', children: 'models' }"
    ></el-cascader>
    <el-cascader
      v-if="selectedValues[0]"
      :options="getBrandById(selectedValues[0]).models"
      v-model="selectedValues[1]"
      @change="handleChange"
      :props="{ value: 'id', label: 'name' }"
    ></el-cascader>
  </div>
</template>

<script>
export default {
  data() {
    return {
      brands: [...], // 编辑为上面提到的数据结构
      selectedValues: []
    };
  },
  methods: {
    handleChange(value) {
      console.log(value);
    },
    getBrandById(id) {
      return this.brands.find((brand) => brand.id === id);
    }
  }
};
</script>
ログイン後にコピー

上記のコードでは、ユーザーが選択したブランドに基づいて、対応する車種を動的に読み込みます。ユーザーがブランドを選択すると、選択したブランドのモデル属性に基づいて 2 番目のドロップダウン ボックスが表示されます。

6. まとめ
VueとElement-UIの連携により、ドロップダウンボックスの多階層連携機能を簡単に実現できます。まずデータを準備し、次に Cascader コンポーネントを使用して props 属性を設定し、変更イベントをリッスンすることでリンケージ効果を実現します。以上がVueとElement-UIを使って多階層連携ドロップダウンボックス機能を実装する方法の詳細説明とサンプルコードです。

以上がVueとElement-UIを使って多階層連携ドロップダウンボックス機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート