elementUI 的 table 表格改变数据不更新问题

2023-10-26

预期效果:点击输入框旁边的图标,输入框变为可输入状态;这里控制输入的 editable 字段不是 data 原有的属性,也不是 data 赋值时就存在的字段。
在这里插入图片描述
问题原因:在 Vue 实例创建时,以及 data 赋值时 editable 并未声明,因此就没有被Vue转换为响应式的属性,自然就不会触发视图的更新。

解决方法:

1、给 data 赋值前把 editable 属性添加到数组里

这里就不贴代码了,大概思路就是:获取到列表信息之后缓存在一个临时数组里(不可以是 data 里面定义好的对象),循环遍历列表信息,给每一条数据都添加一个属性 editable 值为 false,然后再把处理过的列表信息赋值给 data 。

2、使用:key 或者 v-if

修改绑定在 table 上面的 key 值,可以触发 table 的重新渲染,这样就可以把修改后的 data 在表格里面更新渲染。

<el-table :data="data" :key='num' stripe border>
	<el-table-column align="center" label="字段中文名称">
		<template slot-scope="scope">
    		<div style="display: flex;">
    			<el-input :disabled='!scope.row.editable' style="margin-right: 10px;"></el-input>
    			<el-button @click='changeEdit(scope.row)' type='text' icon="el-icon-edit-outline"></el-button>
    		</div>
    	</template>
    </el-table-column>
</el-table>
export default{
	data(){
		return{
			num:0,
			data:[]
		}
	},
	methods:{
		changeEdit(row){
			//每次点击图标 key 自动加一
			row.editable = true;
			num++;
		}
	}
}

这种方法有一个问题:给 table 添加一个默认高度,这个时候数据比较多的话会出现滚动条;当滚动条拉到下面,点击图标让对应的输入框可编辑,同时触发 table 渲染,滚动条会回到顶部,想查看被操作的输入框需要重新把滚动条拉到最下面;这样体验非常不好。如果有这样的场景推荐使用下面的方法。

3、使用 $set

$set 可以让动态的给 data 添加响应式的属性,让 editable 变为响应式的,就可以直接触发页面更新。

<el-table :data="data" stripe border>
	<el-table-column align="center" label="字段中文名称">
		<template slot-scope="scope">
    		<div style="display: flex;">
    			<el-input :disabled='!scope.row.editable' style="margin-right: 10px;"></el-input>
    			<el-button @click='changeEdit(scope.$index,scope.row)' type='text' icon="el-icon-edit-outline"></el-button>
    		</div>
    	</template>
    </el-table-column>
</el-table>
export default{
	data(){
		return{
			num:0,
			data:[]
		}
	},
	methods:{
		changeEdit(index,row){
			row.editable = true;
        	this.$set(this.data,index,row);
		}
	}
}

根据上面的方法延伸 :当 vue 能够检测到数组的变化,触发更新。

changeEdit(index,row){
	row.editable = true;
    this.data.splice(1,0);
}

方法远远不止上面这些,有其他想法的欢迎留言交流!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

elementUI 的 table 表格改变数据不更新问题 的相关文章

  • 杨辉三角c语言实现

    在屏幕上打印杨辉三角 include
  • Spring Boot实战.Spring Boot核心原理剖析

    在上节中我们通过了一个小的入门案例已经看到了Spring Boot的强大和简单之处 本章将详细介绍Spring Boot的核心注解 基本配置和运行机制 笔者一直认为 精通一个技术一定要深入了解这个技术帮助我们做了哪些动作 深入理解它底层的运
  • VMware Workstation(虚拟机)安装英文版XP系统

    因需要写英文文档 里面的截图也要求全英文 所以打算在在原有的XP系统上安装一虚拟机 再在虚拟机里安装英文版XP系统 在此记录一下自己的安装过程 虚拟机的安装过程在此略过 首先要下载英文版XP操作系统iso镜像 本人下载网址 http www

随机推荐

  • pytorch实现简易回归问题

    代码部分 import torch from torch autograd import Variable import torch nn as nn import torch nn functional as F import torch
  • Excel中如何获取汉字拼音首字母

    Excel中如何获取汉字拼音首字母 在工作中 为了方便查询 排序或者编码 需要生成汉字内容信息的首字母 如果信息很多的话 一个个录入是一件很麻烦的事情 下面给大家介绍一个便捷的方法 轻松获取汉字拼音首字母信息 最终效果如下 工具 原料 Mi
  • vue3中使用webcamjs拍照

    最近做了一个考试答题的pc端vue3项目 就是pc端有人脸识别这个流程 于是熟悉了下 附上官方文档地址 https www npmjs com package webcamjs 一 第一步下载 npm i webcamjs 二 vue3中引
  • React如何使用styled-component

    首先需要安装style component 在控住台输入npm install styled component save 全局如何使用呢 在index js中引入style js 以下是style js中的代码 其中使用了reset cs
  • 【数学】张量通俗入门

    1 张量 张量就是一组有序数 或者说 张量就是一组有序数的表现方式 或者说是记号 比如向量是一种表现方式 矩阵是一种表现方式 张量同样也是一种表现方式 它本质就是一组有序的数字而已 值得指出的是 张量是比向量和矩阵更高级的记号 它向下包含了
  • 射频功率衰减器一般采用电阻元件,有两种主要电路形式:π型和T型

    射频功率衰减器一般采用电阻元件 有两种主要电路形式 型和T型 工具下载 https download csdn net download xingqingly 12921701 1 型 输入阻抗和输出阻抗50欧姆
  • STM32中iic驱动mpu6050例程

    一 mpu6050寄存器相关知识 1 本机地址 可在寄存器使用手册查找 mpu6050在iic中是七位地址 Bit6 Bit1是他的前六位地址 默认是110100 末位由AD0引脚的值确定 并不是该寄存器的Bit0位 若AD0引脚置0 则m
  • 电赛需知

    电赛是大学生活里一个很好锻炼自己的机会 电赛前需要规划好电赛期间的几天生活 要撰写好方案 坚定信念 要注意饮食 电赛一般三到五人组队 需要很好的协作能力 较强的沟通能力 参赛期间难免会有争议 不要好高骛远 不要中途改方案
  • 部署langchain+chatglm

    先参考 window零基础部署langchain ChatGLM 飞奔的屎壳郎的博客 CSDN博客 安装一部分 1 GCC安装 gcc64位下载 一定要装64位的gcc 因为我的电脑是w10 64位的 装32位运行langchain报错并配
  • 在android studio下怎么引入android framework来使用隐藏的api

    在eclipse上很容易引入自己编译的android framework来使用系统隐藏的API 在android studio上就有点麻烦了 在gradle 1 0以前可以设置Provided编译属性来支持编译但不打包到dex里面 可是在新
  • 使用JS获得IP地址及其归属

    相关的API接口 ip 获取自己IP https api ip sb ip ip 获取自己IP https api ipify org 获取自己IP以及归属 https api ip sb geoip ip api com 接口 http
  • String 字符串 转为字符数组

    推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画 AI讲话 翻译 GPU点亮AI想象空间 资源分享 史上最全文档AI绘画stabledif
  • Csharp:The .dat File using BinaryReader and BinaryWriter Convert to DataTable

  • Css3透明、background-size 属性

    background size length percentage cover contain 值 描述 测试 length 设置背景图像的高度和宽度 第一个值设置宽度 第二个值设置高度 如果只设置一个值 则第二个值会被设置为 auto 测
  • Python小知识点总结

    1 super 在类的继承中 如果重定义某个方法 该方法会覆盖父类的同名方法 但有时 我们希望能同时实现父类的功能 这时 我们就需要调用父类的方法了 可通过使用 super 来实现 class Animal object def init
  • ipv6 socket bind 失败 - accept_dad

    file proc sys net ipv6 conf interface accept dad variable net ipv6 conf interface accept dad Official reference Whether
  • 阿里一面:讲一讲 Spring、SpringMVC、SpringBoot、SpringCloud 之间的关系?

    大家好 我是Tom哥 搞后端开发的同学 对 Spring 家族一定不陌生 Spring 全家桶了为了解决不同场景的问题 逐渐演化出多套生态环框 如 Spring SpringMVC SpringBoot SpringCloud 它们之间的关
  • 区块链原理与应用(一)

    1 什么是区块链 mermaid svg z62l3eavYilXMK3m label font family trebuchet ms verdana arial font family var mermaid font family f
  • 【ML】2023 年面向初学者的十大机器学习项目

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • elementUI 的 table 表格改变数据不更新问题

    预期效果 点击输入框旁边的图标 输入框变为可输入状态 这里控制输入的 editable 字段不是 data 原有的属性 也不是 data 赋值时就存在的字段 问题原因 在 Vue 实例创建时 以及 data 赋值时 editable 并未声