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

 更新时间:2022年02月24日 10:50:16   作者:三个木马人  
最近在做vue的项目时发现了一个问题,今天就来解决一下,本文主要介绍了elementUI的table表格改变数据不更新问题解决,感兴趣的可以了解一下

预期效果:点击输入框旁边的图标,输入框变为可输入状态;这里控制输入的 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);
}

到此这篇关于elementUI的table表格改变数据不更新问题解决的文章就介绍到这了,更多相关element table数据不更新内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue+FormData+axios实现图片上传功能的项目实战

    Vue+FormData+axios实现图片上传功能的项目实战

    本文主要介绍了Vue+FormData+axios实现图片上传功能的项目实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • vue项目适配大屏端的方法示例

    vue项目适配大屏端的方法示例

    众所周知在vue移动端h5页面当中,适配是经常会遇到的问题,这篇文章主要给大家介绍了关于vue项目适配大屏端的相关资料,需要的朋友可以参考下
    2021-08-08
  • 详解Vue 换肤方案验证

    详解Vue 换肤方案验证

    这篇文章主要介绍了Vue 换肤方案验证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Vue+Element ui实现树形控件右键菜单

    Vue+Element ui实现树形控件右键菜单

    这篇文章主要为大家详细介绍了Vue+Element ui实现树形控件右键菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • Vue+vite创建项目关于vite.config.js文件的配置方法

    Vue+vite创建项目关于vite.config.js文件的配置方法

    Vue项目创建时,我们见过vue-cli 创建项目和webpack 创建项目等方式,这篇文章主要介绍了Vue+vite创建项目关于vite.config.js文件的配置方法,需要的朋友可以参考下
    2023-06-06
  • vue项目中Toast字体过小,没有边距的解决方案

    vue项目中Toast字体过小,没有边距的解决方案

    这篇文章主要介绍了vue项目中Toast字体过小,没有边距的解决方案。具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Vue插槽_特殊特性slot,slot-scope与指令v-slot说明

    Vue插槽_特殊特性slot,slot-scope与指令v-slot说明

    这篇文章主要介绍了Vue插槽_特殊特性slot,slot-scope与指令v-slot说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题

    解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题

    这篇文章主要介绍了解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题,需要的朋友可以参考下
    2019-10-10
  • el-form resetFields无效和validate无效的可能原因及解决方法

    el-form resetFields无效和validate无效的可能原因及解决方法

    本文主要介绍了el-form resetFields无效和validate无效的可能原因及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 一文详解vue生命周期在uniapp中的用法

    一文详解vue生命周期在uniapp中的用法

    在uniapp中,vue的生命周期的用法基本都得以保留,但是对于特殊的需求以及特殊的情况,uniapp还引入了一些特有的生命周期钩子,本文给大家详细介绍了vue生命周期在uniapp中的用法,感兴趣的朋友可以参考下
    2024-01-01

最新评论