市县两个选择框联动

问题描述:

遇到一个需求,就是市和县要做成两个选择框,并保持它们数据的联动。使用vue + element ui的实现方法如下:

<template>
  <div class="app-container">
    <el-form label-position="left" ref="form" :model="form" label-width="40px">
      <el-row>
        <el-col :span="6">
          <el-form-item label="市:">
            <el-select size="small" v-model="form.cityId" clearable placeholder="请选择市" @change="handleChangeCity">
              <el-option
                v-for="item in cityDic"
                :key="item.code"
                :label="item.name"
                :value="item.code">
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="10">
          <el-form-item label="县:">
            <el-select size="small" v-model="form.countyId" clearable placeholder="请选择县">
              <el-option
                v-for="item in countyDic"
                :key="item.code"
                :label="item.name"
                :value="item.code">
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      form: {
        cityId: '',
        countyId: ''
      },
      cityDic: [
        {
          code: '1',
          name: '郑州市'
        },
        {
          code: '2',
          name: '开封市'
        },
        {
          code: '3',
          name: '洛阳市'
        },
        {
          code: '4',
          name: '南阳市'
        }
      ],
      countyDic: []
    };
  },
  mounted() {

  },
  methods: {
    //市选中发生变化时,联动县数据事件
    handleChangeCity(value) {
      this.countyDic = [] //每次市选中发生变化就初始化县的数据
      this.form.countyId = '' //每次市选中发生变化时,就重置清空县的选中值
      if(value) {
        let cityName = this.cityDic.find(item => item.code === value).name
        for(let i = 1; i < 5; i++) {
          this.countyDic.push({
            code: i,
            name: cityName + '的县 ' + i
          })
        }
      }
    },
    //更直观一些的写法
    //市选中发生变化时,联动县数据事件
    handleChangeCityAnother(value) {
      if(value) {
        let cityName = this.cityDic.find(item => item.code === value).name
        this.countyDic = []
        for(let i = 1; i < 5; i++) {
          this.countyDic.push({
            code: i,
            name: cityName + '的县 ' + i
          })
        }
        this.form.countyId = '' 
      }else {
        this.form.countyId = ''
        this.countyDic = []
      }
    },
  },
};
</script>
<style scoped>

</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值