【vue】实现单选框二级联动

本文介绍了一个前端开发中关于用工形式和薪资选择的动态联动实现,通过el-select组件和clearable属性,确保了用户在选择不同用工形式时薪资选项会随之更新,反之亦然。代码示例和关键方法详细解释了如何在Vue中处理这种数据交互。
摘要由CSDN通过智能技术生成

需求:

选择用工形式后,薪资才出现内容。薪资的内容随着用工形式的选择发生变化。
当清除薪资中的内容时,用工形式的内容不会被清除;当清除用工形式中的内容时,薪资中的内容也会被随着清除;
在这里插入图片描述

代码实现:

<div class="work-condition1">
            <span class="condition-type1"
              >用工形式:
              <span>
                <el-select v-model="configForm.ygxs" placeholder="请选择" @change="subjectLevelOneChanged" clearable @clear="delValue">
                  <el-option
                    v-for="subject in subjectOneList"
                    :key="subject.id"
                    :label="subject.title"
                    :value="subject.id"/>
                </el-select>
              </span>
            </span>
            <span class="condition-type1">薪资:
              <!-- 二级分类 -->
              <el-select v-model="configForm.xc" clearable placeholder="请先选择用工形式" @change="selectXc">
                <el-option
                  v-for="subject in subjectTwoList"
                  :key="subject.value"
                  :label="subject.title"
                  :value="subject.id"/>
              </el-select>
            </span>
          </div>

注意: el-selec中的clearable属性,则可将选择器清空。需要注意的是,clearable属性仅适用于单选。所以需要使用@clear事件进行联动清除;

return中的数据装配:

return {
    subjectOneList: [
        {
          "id": "10",
          "title": "全职",
          "children": [
            {
              "id": "0-3000",
              "title": "3K以下"
            },
            {
              "id": "3000-5000",
              "title": "3-5K"
            },
            {
              "id": "5000-10000",
              "title": "5-10K"
            },
            {
              "id": "10000-15000",
              "title": "10-15K"
            },
            {
              "id": "15000-20000",
              "title": "15-20K"
            },
            {
              "id": "20000-30000",
              "title": "20-30K"
            },
            {
              "id": "30000-50000",
              "title": "30-50K"
            },
            {
              "id": "50000",
              "title": "50K以上"
            }
          ]
        },
        {
          "id": "20",
          "title": "兼职",
          "children": [
            {
              "id": "30-50",
              "title": "30-50"
            },
            {
              "id": "50-100",
              "title": "50-100"
            },
            {
              "id": "100",
              "title": "100以上"
            }
          ]
        },
        {
          "id": "30",
          "title": "临时工",
          "children": [
            {
              "id": "30-50",
              "title": "30-50"
            },
            {
              "id": "50-100",
              "title": "50-100"
            },
            {
              "id": "100",
              "title": "100以上"
            }
          ]
        },
        {
          "id": "40",
          "title": "小时工",
          "children": [
            {
              "id": "30-50",
              "title": "30-50"
            },
            {
              "id": "50-100",
              "title": "50-100"
            },
            {
              "id": "100",
              "title": "100以上"
            }
          ]
        },
      ],
      subjectTwoList: []
}

methods方法:

methods: {
    // 点击清空按钮时触发
    delValue() {
      this.configForm.ygxs=''
      if(this.configForm.xc != ''){
        this.configForm.xc=''  //调用数据的方法的入参赋值
        this.subjectTwoList='' //调用数据的方法的入参赋值
        this.getData() //调用数据的方法
      }
    },
    subjectLevelOneChanged(value){
      //value就是一级分类的id值
      //先遍历所有的分类 里面包含一级和二级
      for (var i = 0; i <this.subjectOneList.length; i++) {
        //每个一级分类
        var oneSubject=this.subjectOneList[i]
        //判断:所有一级分类id和点击一级分类id是否一样
        if(value===oneSubject.id){ //===即比较值 还要比较类型
        //从一级分类中获取所有的二级分类
        this.subjectTwoList=oneSubject.children
        //把二级分类Id值清空
        this.configForm.xc=''
        }
      }
      this.configForm.ygxs = value //调用数据的方法的入参赋值
      this.getData() //调用数据的方法
    },
    selectXc(val){        
      this.configForm.xc = val //调用数据的方法的入参赋值
      this.getData() //调用数据的方法
    }
}    

联动清空参考链接:https://www.cnblogs.com/joe235/p/13637587.html
数据装配、选择联动参考链接:https://www.jb51.net/article/227005.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值