vue实现多个下拉框联动(一)

要实现Vue3中多个下拉框的联动,可以使用v-model指令和watch特性来实现。

首先,在Vue组件中定义多个下拉框的数据和选项列表:

<template>
  <div>
    <select v-model="selectedOption1">
      <option v-for="option in options1" :value="option">{{ option }}</option>
    </select>

    <select v-model="selectedOption2">
      <option v-for="option in options2" :value="option">{{ option }}</option>
    </select>

    <select v-model="selectedOption3">
      <option v-for="option in options3" :value="option">{{ option }}</option>
    </select>
  </div>
</template>

<script>
import { ref, watch } from 'vue';

export default {
  setup() {
    const selectedOption1 = ref('');
    const selectedOption2 = ref('');
    const selectedOption3 = ref('');

    const options1 = ['Option 1', 'Option 2', 'Option 3'];
    const options2 = ['Option A', 'Option B', 'Option C'];
    const options3 = ['Option X', 'Option Y', 'Option Z'];

    watch(selectedOption1, (newValue) => {
      // 根据选择的选项更新其他下拉框的选项列表
      if (newValue === 'Option 1') {
        options2.value = ['Option A', 'Option B', 'Option C'];
        options3.value = ['Option X', 'Option Y', 'Option Z'];
      } else if (newValue === 'Option 2') {
        options2.value = ['Option D', 'Option E', 'Option F'];
        options3.value = ['Option X', 'Option Y', 'Option Z'];
      } else if (newValue === 'Option 3') {
        options2.value = ['Option G', 'Option H', 'Option I'];
        options3.value = ['Option X', 'Option Y', 'Option Z'];
      }

      // 重置其他下拉框的选中值
      selectedOption2.value = '';
      selectedOption3.value = '';
    });

    return {
      selectedOption1,
      selectedOption2,
      selectedOption3,
      options1,
      options2,
      options3
    };
  }
};
</script>

使用ref函数创建了多个响应式的变量selectedOption1selectedOption2selectedOption3,用于保存下拉框的选中值。然后,定义多个选项列表options1options2options3

接下来,使用watch函数来监听selectedOption1的变化。当selectedOption1的值发生变化时,可以根据选择的选项更新其他下拉框的选项列表,并重置其他下拉框的选中值。

最后,在模板中使用v-model指令将下拉框的选中值与selectedOption1selectedOption2selectedOption3绑定起来,同时使用v-for指令遍历选项列表。

这样,当选择一个选项时,其他下拉框的选项列表和选中值就会根据选择的选项进行更新,实现了多个下拉框的联动效果。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实现两个下拉框联动的方法有很多,以下是一个基于 Vue 的示例: HTML 代码: ``` <div id="app"> <label for="province">省份:</label> <select id="province" v-model="selectedProvince"> <option v-for="province in provinces" :value="province">{{ province }}</option> </select> <label for="city">城市:</label> <select id="city" v-model="selectedCity"> <option v-for="city in cities" :value="city">{{ city }}</option> </select> </div> ``` JavaScript 代码: ``` new Vue({ el: '#app', data: { provinces: ['北京', '上海', '广东'], cities: { '北京': ['北京市'], '上海': ['上海市'], '广东': ['广州市', '深圳市', '珠海市'] }, selectedProvince: '', selectedCity: '' }, watch: { selectedProvince: function(val) { this.selectedCity = ''; } }, computed: { filteredCities: function() { return this.cities[this.selectedProvince]; } } }); ``` 代码解释: 1. `provinces` 是一个数组,存储所有省份的名称。 2. `cities` 是一个对象,存储每个省份对应的城市数组。 3. `selectedProvince` 和 `selectedCity` 是两个双向绑定的变量,分别表示当前选中的省份和城市。 4. 在 `watch` 选项中,当 `selectedProvince` 发生变化时,将 `selectedCity` 置空,以防止用户选择了一个省份后,城市下拉框中还显示上一个省份的城市。 5. 在 `computed` 选项中,使用 `selectedProvince` 获取当前选中的省份对应的城市数组,存储在 `filteredCities` 中,用于在城市下拉框中显示正确的选项。 6. 在 HTML 中,使用 `v-for` 指令遍历 `provinces` 和 `filteredCities` 数组,动态生成省份和城市下拉框中的选项。 7. 在省份和城市下拉框中,使用 `v-model` 指令将选中的值与 `selectedProvince` 和 `selectedCity` 双向绑定,以实现联动效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温暖前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值