• vue2+elementUI,vue3+elementPlus解决form中的下拉列表回写显示id,不显示label


    三个问题:

    问题1:vue2+elementui中form下的下拉列表回写,赋值之后会出现更改不了值的情况
    问题2:表单中绑定的值是v-model=‘form.father.son’ 这种多级响应不了,把这种多级改成单级 v-model=‘form.son’ 就不会出现值更改不了的情况
    问题3:vue3+elementPlus 表单基础多选,回写的时候显示的是id 不是label名称,因为我的类型错误导致的

    如下:

    问题1:vue2+elementui中form下的下拉列表回写,赋值之后会出现更改不了值的情况,原因是我之前的赋值方式是

    问题代码:

    edit(row){
    	//显示弹窗
    	this.centerDialogVisible = true
    	// 给表单中的输入框赋值
    	this.form.title=row.title
    	// 给表单中的下拉框赋值
    	this.form.teacher_id=row.teacher_id
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    更改之后的代码:

    edit(row){
    	//显示弹窗
    	this.centerDialogVisible = true
    	
    	this.form={
    		title:row.title,// 给表单中的输入框赋值
    		teacher_id:row.teacher_id// 给表单中的下拉框赋值
    	}
    
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    问题2:表单中绑定的值是v-model=‘form.father.son’ 这种多级响应不了,把这种多级改成单级 v-model=‘form.son’ 就不会出现值更改不了的情况

    问题3:vue3+elementPlus 表单基础多选,回写的时候显示的是id 不是label名称,因为我的类型错误导致的
    后端给的数据是字符串类型的 1,4,3,2
    在这里插入图片描述

    在这里插入图片描述
    但是elementplus中需要的是数字类型的数组
    在这里插入图片描述
    直接字符串转数组,转出来的类型是 [‘1’,‘4’,‘3’,‘2’]
    需要把数组中的字符串转成数字类型 [1,4,3,2],使用.map(Number) 方法

    问题代码:

     ruleForm.template_ids = row.template_id ? row.template_id.split(',') : []
    
    • 1

    正确代码:

     <el-form ref="ruleFormRef" :model="ruleForm" >
    	<el-form-item label="选择模板:" prop="">
    	  <el-select v-model="ruleForm.template_ids" filterable multiple placeholder="请选择/输入"
    	 >
    	      <el-option :label="item.template_title" :value="item.id" v-for="(item, index) in mubanArr"
    	          :key="index"></el-option>
    	  </el-select>
    	</el-form-item>
    </el-form>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    		let template_id = row.template_id.split(',') // ['1','4','3','2']
            let xx = template_id.map(Number) //  [1,4,3,2]
            ruleForm.template_ids = xx.length > 0 ? xx : [] //给表单赋值回写
    
    • 1
    • 2
    • 3

    vue3中表单的回写方式如下:(不是写在一起,单独排列开)

    ruleForm.title = row.title
    ruleForm.teacher_id = row.teacher_id
    
    • 1
    • 2

    这是我自己实验出来的代码,效果是好的,如有不足或者有更好的方法,欢迎指正探讨

  • 相关阅读:
    2023年【A特种设备相关管理(锅炉压力容器压力管道)】考试内容及A特种设备相关管理(锅炉压力容器压力管道)考试技巧
    LeetCode(力扣)216. 组合总和 IIIPython
    代理技术的演进:从SOCKS到透明代理再到智能HTTP代理
    python输出唐诗 青少年编程电子学会python编程等级考试二级真题解析2021年12月
    入职中国平安三周年的一些总结
    WebSocket
    Redis进阶知识一览
    自然语言处理系列(三)——LSTM
    [算法周训 3] 字符串训练2
    https跳过SSL认证时是不是就是不加密的,相当于http?
  • 原文地址:https://blog.csdn.net/sumimg/article/details/133749765