处理select选择器回显数据后dom元素无法操作问题

问题描述:

使用element组件库中的el-select组件处理数据,在项目中有个编辑操作,已经实现在编辑时给v-model绑定的数组重新赋值,这样多选框能实现回显数据。去掉原来的或者勾选新的都不可以。

原因

这里的下拉框我采用的是若依的数据字典循环取值,因为数据层次太多,render函数没有自动更新,需手动强制刷新。

系统:

vue的若依系统

解决办法一:

给select组件添加@change="$forceUpdate()"方法

<el-select
    v-model="userForm.roleIds"
    collapse-tags
    multiple
    @change="$forceUpdate()"
    placeholder="请选择用户角色(可多选)" >
        <el-option
            v-for="item in roleList"
            :key="item.roleId"
            :label="item.roleName"
            :value="item.roleId"
        >
       </el-option>
 </el-select>
解决办法二:
 <el-form-item label="角色:" prop="roleIds">
          <el-select
            v-model="userForm.roleIds"
            collapse-tags
            multiple
            @change="roleChane"
            placeholder="请选择用户角色(可多选)"
          >
            <el-option
              v-for="item in roleList"
              :key="item.roleId"
              :label="item.roleName"
              :value="item.roleId"
            >
            </el-option>
        </el-select>
 </el-form-item>
 
 roleChane(){
    this.$forceUpdate();
 }
解决办法三:

使用this.$set方法

//dom元素设置
<el-select  v-model="userForm.roleIds"  collapse-tags multiple   placeholder="请选择用户角色(可多选)"  >
      <el-option v-for="item in roleList"   :key="item.roleId"  :label="item.roleName"  :value="item.roleId"  >
      </el-option>
</el-select>
//js实现
//在点击编辑对表格数据进行复制的接口里进行如下操作
getUserDetail(userId) {
      apiUserDetail({ userId: userId })
        .then((res) => {
          if (res.retcode === "000000") {
            let changeData = { ...res.data };
            // 角色数据处理
            let roleIdArr = [];
            changeData.roles.map((item) => roleIdArr.push(item.roleId));
            this.$set(this.userForm, "roleIds", roleIdArr);
            //this.userForm.roleIds = roleIdArr;$set方法使用理解
            delete this.userForm.roles;//释放详情接口数据角色内存
          } else {
            this.msgError(res.retinfo);
          }
        })
        .catch((err) => {
          this.msgError("请求失败请重试");
        })
        .finally(() => {});
    },

本片文章有参考到如下文档:link.

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
回显element-ui的select选择器问题可能有几个原因。首先,确保你的options中的value的类型与data中定义的value的类型一致。如果它们的类型不匹配,回显可能会失败。其次,如果你的select框在点击后无法选中值,可以尝试给select框添加一个@change事件,并在事件中执行this.$forceUpdate()函数,这样可以强制更新组件,使其能够正确获取到值并回显。\[2\]\[3\]另外,如果你的select框的option有值但无法下拉展示出来,可能是因为你的select框的样式或者父元素的样式导致了显示问题,你可以检查一下相关的CSS样式是否正确设置。\[3\]如果以上方法都没有解决问题,可以提供更多的代码和具体的错误信息,以便更好地帮助你解决问题。 #### 引用[.reference_title] - *1* *3* [关于vue中elementUI的input和select框值无法回显问题解决](https://blog.csdn.net/YANJIEAILISISI/article/details/124320907)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [关于element ui --Select 选择器回显问题](https://blog.csdn.net/qq_47908693/article/details/125699106)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值