element多选框select下拉框数据回显的问题value.push is not a function

作者在使用ElementUI的el-select组件时遇到问题,因v-model绑定的是字符串而非数组,导致下拉框选中但文本框无值。解决方法是将后端返回的string型`wechatObject`转换为数组。一个小错误,大教训:熟悉组件用法可以避免很多困扰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

问题描述

今天在使用Element UI el-select组件遇到了一个问题,如下图:
下拉框里的值选中了,但是文本框里没有值

在这里插入图片描述

这是 el-select组件代码,我这里是用了一个多选框,options的值是在后端查询的,form.wechatObject的值是wxid(id),然后再下拉列表中回显的是nick(name)

经排查发现问题原因是: el-select中的v-model应该要绑定一个数组类型的,但是现在我的form.wechatObjec是后端直接返回过来的,现在是一个string类型的,没有进行处理,所以导致的在文本框中显示不出来,所以要对form.wechatObject的值进行转换一下,转换为数组。
我这个的业务场景是点击修改按钮的时候去查询数据库,然后把弹窗打开,我这里就是在查询完数据库之后,对form.wechatObject值进行转换。

<el-select
  v-model="form.wechatObject"
  @change="isChecked"
  @blur="productSelect"
  clearable
  multiple
  filterable
  placeholder="请选择"
  class="product-input"
  allow-create
>
  <el-option
    v-for="item in options"
    :key="item.wxid"
    :label="item.nick"
    :value="item.wxid"
  >
  </el-option>
</el-select>

下面是将form.wechatObject进行值转换的代码

this.form.wechatObject = this.form.wechatObject.split(',');

唉,兜兜转转总结来说,其实就是一行代码的事情,但是由于对el-select组件的不熟悉,导致走了很多的弯路!!!

单选框和复选框的回显可以使用 JavaScript 的 DOM 操作来实现。假设我们有以下 HTML 代码: ```html <label for="option1">选项1</label> <input type="radio" id="option1" name="options" value="1"> <label for="option2">选项2</label> <input type="radio" id="option2" name="options" value="2"> <label for="option3">选项3</label> <input type="checkbox" id="option3" name="options" value="3"> <label for="option4">选项4</label> <input type="checkbox" id="option4" name="options" value="4"> ``` 我们可以通过以下 JavaScript 代码来实现单选框和复选框的回显: ```javascript // 获取单选框和复选框元素 var option1 = document.getElementById("option1"); var option2 = document.getElementById("option2"); var option3 = document.getElementById("option3"); var option4 = document.getElementById("option4"); // 设置单选框和复选框的默认选中状态 option1.checked = true; option3.checked = true; // 监听单选框和复选框的变化,更新选中状态 option1.addEventListener("change", function() { option2.checked = false; }); option2.addEventListener("change", function() { option1.checked = false; }); option3.addEventListener("change", function() { option4.checked = false; }); option4.addEventListener("change", function() { option3.checked = false; }); ``` 这段代码首先获取了四个单选框和复选框的元素,并设置了选项1和选项3为默认选中状态。然后通过监听单选框和复选框的变化,更新其他选项的选中状态。 下拉框回显也可以使用 JavaScript 的 DOM 操作来实现。假设我们有以下 HTML 代码: ```html <select id="fruit"> <option value="apple">苹果</option> <option value="banana">香蕉</option> <option value="orange">橙子</option> </select> ``` 我们可以通过以下 JavaScript 代码来实现下拉框回显: ```javascript // 获取下拉框元素 var fruit = document.getElementById("fruit"); // 设置下拉框的默认选中状态 fruit.value = "banana"; // 监听下拉框的变化,更新选中状态 fruit.addEventListener("change", function() { if (fruit.value === "apple") { // do something } else if (fruit.value === "banana") { // do something } else if (fruit.value === "orange") { // do something } }); ``` 这段代码首先获取了下拉框的元素,并设置了香蕉为默认选中状态。然后通过监听下拉框的变化,更新其他选项的选中状态。根据选中的值,可以执行不同的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值