vue+elementui el-select选择框异步请求选项列表,$set之后显示的value值

场景

两个el-select 联动的选择框,选完第一个框异步加载第二个框的选项列表并给第二个选项赋值为选项的第一个值

<template>
    <el-select
        v-model="formData.data1"
        @change="onChange"
    >
        <el-option
          v-for="item in option1"
          :key="item.id"
          :label="item.label"
          :value="item.value"
        ></el-option>
    </el-select>

    <el-select
        v-model="formData.data1"
        @change="onChangeProject"
    >
        <el-option
          v-for="item in option1"
          :key="item.id"
          :label="item.label"
          :value="item.value"
        ></el-option>
    </el-select>
</template>

<script>
	export default {
		data() {
            return {
                formData: {},
                option1 = []
                : [],
                option2: [],
            }
        },
        
        method: {
            onChange() {
                this.$set(this.formData, 'data2', undefined)
                this.option2 = []
                Request('post', 'xxxxx').then(res => {
                    this.option2 = res.data
                    this.$set(this.formData, 'data2', this.option2[0].id)
                })
            }
        }
    }
</script>

示例
在这里插入图片描述
在这里插入图片描述
切换第一个选项之后如果在很短的时间内去点击第二个选项框,
第二个选项的值为空但是选项中已选中,或者会出现直接渲染出value值的情况。

解决方案

网上看了很多方法,使用this.$set value值和选项中的value数据类型不同等等
最后的解决方案是:

 onChange() {
                this.$set(this.formData, 'data2', undefined)
                this.option2 = []
                Request('post', 'xxxxx').then(res => {
                    this.option2 = res.data
                   setTimeout(() => {
                    	this.$set(this.formData, 'data2', this.option2[0].id)
                    }, 0)
                })
            }
在setTimeout中对formData进行赋值
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值