el-select数据回填时的处理方案与踩坑解决方法

在Vue项目中,为组件设置默认值通常涉及v-model的赋值。然而,对于el-select组件,除了设置v-model的初始值,还需要确保对应的el-option数据已准备就绪,以正确初始化选择器,避免出现未选择项的问题。
摘要由CSDN通过智能技术生成

项目场景:

为需要进行双向数据绑定的组件设定默认值时就是直接对v-model绑定的值赋值。但是对于el- select来说 不仅需要赋值v-model的初值,还需要将对应v-model的el-option所依赖的数据设置好,这样才能解决初始化选择器的问题。

el-select的选项数据与回显数据不一致el-option会显示为未选中状态。这种情况下,我们可以通过设置el-select的multiple属性为true来允许用户自定义选项,从而解决回显数据与选项数据不一致的问题。 具体来说,我们可以将el-select的multiple属性设置为true,并将回显数据作为v-model绑定到el-select上。这样,用户可以在el-select中自由选择选项,而不受选项数据的限制。如果回显数据中包含了选项数据中不存在的值,我们可以在el-select组件中添加一个新的el-option,提示用户该值不存在于选项数据中。 以下是一个实现提示不存在值的el-select组件的示例代码: ```vue <template> <el-select v-model="selectedValue" :multiple="true"> <el-option v-for="option in options" :key="option.value" :label="option.label" :value="option.value"></el-option> <el-option v-if="!options.some(option => option.value === selectedValue)" :label="`不存在的值:${selectedValue}`" :value="selectedValue"></el-option> </el-select> </template> <script> export default { props: { value: { type: [String, Array], default: '' }, options: { type: Array, default: () => [] } }, computed: { selectedValue: { get() { return this.value }, set(newValue) { this.$emit('input', newValue) } } } } </script> ``` 在上面的代码中,我们首先通过props接收了el-select的选项数据(options)和回显数据(value)。然后,我们将value作为v-model绑定到el-select上,以便可以监听用户的选择。接下来,我们根据options和selectedValue渲染了所有的el-option,并使用条件渲染添加了一个新的el-option,用于提示不存在于options中的selectedValue。最后,我们通过一个computed属性将selectedValue转换为双向绑定的value属性,并在setter中触发input事件,以便将用户的选择传递给父组件。 使用这个el-select组件,如果回显数据中包含了一个不存在于选项数据中的值,el-select会自动添加一个新的选项,提示用户该值不存在于选项数据中。这样用户就可以自由选择所有选项,包括回显数据中不存在于选项数据中的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值