vue elementUI下拉框值无法选中问题

本文介绍了在使用Vue.js开发时,如何处理点击修改后下拉框选择不及时的问题,包括单选框的直接赋值和多选框的进一步处理,以及使用$forceUpdate()方法来确保视图的及时更新。
摘要由CSDN通过智能技术生成

大家在写系统的时候,会有这样的需求:点击修改后把需要修改的数据放入表单,其中会有下拉单选框、下拉多选框。

  • 展示下拉框单选框内的数据只需要将所选id赋值给下拉框绑定的值就可以了。在修改的时候,大家会发现下拉框选择不了,出现这问题的原因就是视图更新不够及时,在下拉框绑定一个change事件,写入this.$forceUpdate()就不会出现问题了
<el-form-item label="游戏">
    <el-select v-model="form.gamesId" filterable placeholder="请选择" @change="changeGame">
        <el-option v-for="item in gameList" :key="item.id" :label="item.name" :value="item.id"></el-option>
    </el-select>
</el-form-item>
this.form.gamesId = res.data.gamesId // 点击修改后请求接口,将值赋给下拉框绑定的变量 这样会有视图更新不及时的问题
changeGame(id){
    this.$forceUpdate() //在下拉框上绑定change事件 更新视图 这样就不会有视图更新的问题
},
  • 多选框。多选框不像单选框只要直接赋值进去就可已,还需要做进一步处理
<el-form-item label="标签" prop="label">
    <el-select v-model="form.label" multiple collapse-tags placeholder="请选择">
         <el-option v-for="item in labels" :key="item.id" :label="item.name" :value="item.name">
        </el-option>
    </el-select>
</el-form-item>
// this.form.label:下拉框绑定值 this.labels:下拉框内所有数据
let arr=[]
this.form.label.forEach(val=>{
    this.labels.forEach(item=>{
        if(val==item.id){
            arr.push(item.name);
        }
    })
})
this.form.label=arr
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以通过监听下拉框的change事件,在选中全国选项时,将其他选项禁用或隐藏,同时记录当前选中的选项数量,当选中其他选项时,判断当前选中的选项数量是否已经达到最大,如果已经达到最大,则禁用或隐藏其他选项。 以下是一个简单的实现示例: ```html <el-select v-model="selectedOptions" multiple @change="handleChange"> <el-option label="全国" value="全国"></el-option> <el-option label="北京" value="北京" :disabled="disabledOptions.includes('北京')"></el-option> <el-option label="上海" value="上海" :disabled="disabledOptions.includes('上海')"></el-option> <el-option label="广东" value="广东" :disabled="disabledOptions.includes('广东')"></el-option> <el-option label="江苏" value="江苏" :disabled="disabledOptions.includes('江苏')"></el-option> <el-option label="浙江" value="浙江" :disabled="disabledOptions.includes('浙江')"></el-option> </el-select> ``` ```javascript data() { return { selectedOptions: [], disabledOptions: [], maxOptions: 2 }; }, methods: { handleChange(value) { if (value.includes('全国')) { // 如果选中了全国,禁用其他选项 this.disabledOptions = ['北京', '上海', '广东', '江苏', '浙江']; } else { // 如果没有选中全国,清空禁用选项 this.disabledOptions = []; } // 如果选中了其他选项,判断是否已经达到最大数量 if (value.length > this.maxOptions) { const lastOption = value[value.length - 1]; // 禁用最后一个选项 this.disabledOptions.push(lastOption); // 从已选中的选项中移除最后一个选项 this.selectedOptions = this.selectedOptions.filter(option => option !== lastOption); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一名技术极客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值