Vue 实现二个下拉框的联动

功能:

实现选择 机构,部门展示属于机构的列表

1:定义二个下拉框,按照组件绑定好,机构选定下拉项的时候给一个改变事件

<el-form-item>
        <el-select placeholder="机构" v-model="form.organ" clearable @change="getdept">
          <el-option
            v-for="item in organOptions"
            :label="item.name"
            :value="item.name"
            :key="item.institutionID"
          />
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-select placeholder="部门" v-model="form.dept" clearable>
          <el-option
            v-for="item in deptOptions"
            :label="item.departname"
            :value="item.departname"
            :key="item.departname"
          />
        </el-select>
</el-form-item>

 2:定义好变量

<script>
export default {
  data() {
    return {
        form: {
            organ: "",
            dept: "",
        },
        organOptions: [],
        deptOptions: [],
    }
  }
}
</scipt>

 3:实现以及调用的方法

mounted() {
    this.getOptions();
},

//机构方法

getOptions() {
      axios({
        url: "XXX",
        method: "post"
      }).then(res => {
        if (res.data.code === 200) {
          this.organOptions = res.data.data;
        }
      });
 },

4:选择一个框的时候,记得将这个框的参数带过去给另一个框的接口

//部门方法

getdept(){
      axios({
        url: "XXX",
        method: "post",
        params:{
            departname:this.form.organ //第一个框的v-model的那个参数
        },
      }).then(res => {
        console.log('部门',res);
        if (res.data.code === 200) {
          this.deptOptions = res.data.data;
        }
      });
 },

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值