需求:页面里有个table,点击编辑可以编辑该table,保存数据并展示到页面上来

第一种方法就是把编辑态的table做成子组件(且叫editeTable),通过v-show判断是否进入编辑态来显示隐藏。先仿造原本父组件(且叫fatherTable),做了一些基本的table样式,子组件editeTable里的tr每格皆为antd-Form表单输入框,接收fatherTable的data数据,用Form的API——validateFields校验并获取输入域的值,进行编辑,用户编辑完后,点保存,然后editeTable里的数据通过$emit函数showPage()传递给fatherTable,覆盖掉fatherTable原本的data数据,这样即可实现。以下为部分代码(不全):1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

v-show="this.editeType"

:editeData="entityinfo"

:editeType="editeType"

@showPage="editeShow">

// 子组件js

export default {

props: {

editeData: Object,

editeType: Boolean

},

mounted() {

this.initDate();

},

watch: {

editeType: function() {

// console.log(this.editeType);

if(this.editeType){

setTimeout(()=>{

this.initDate();

},200)

// this.initDate();

// console.log(111,this.editeData)

}

else {

this.form.setFieldsValue(this.entityinfo);

}

},

methods: {

handleSearch(e) {

e.preventDefault();

this.form.validateFields((error, values) => {

// console.log('error', error);

// console.log('Received values of form: ', values);

// console.log(values);

this.$emit('showPage', values)

});

this.from.validateFields();

}

}

另一种方法是用antd-table自带的编辑edite功能,这个功能可以实现对每一行的数据进行定点编辑,但是遇到一个坑,如果我编辑态也是做成一个子组件的话,就需要先在子组件通过props取到父组件传来的值data,但我们都知道子组件是没有权利更改父组件传过来的值,这时候我们需要定义一个新的变量newdata,通过深拷贝data给newdata赋值,但细看antd文档就知道,antd-table里的数据需要每一条数据都有一个属于自己的key值,然后我们的data并没有key值,此时就需要遍历newdata,给每个对象就push一个key值。然后在newdata上进行操作。1

2

3

4this.newData = [...this.data] || [];

this.newData.forEach((item,index) => {

item.key = index;

}

而且要注意一点就是,antd-table的dataIndex和scopedSlots必须为同名,否则不生效,这是第二个坑,所以newdata在初始化数据要注意。之后编辑获取到新的newdata,便可以通过$emit给父组件传值,得到编辑后的效果。

以下为antd-table的部分实例代码:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20const columns = [{

title: 'name',

dataIndex: 'name',

width: '25%',

scopedSlots: { customRender: 'name' },

}, {

title: 'operation',

dataIndex: 'operation',

scopedSlots: { customRender: 'operation' },

}]

const data = []

for (let i = 0; i < 100; i++) {

data.push({

key: i.toString(),

name: `Edrward ${i}`,

age: 32,

address: `London Park no. ${i}`,

})

}

antd table排序 vue_antd of Vue 之table组件踩坑记相关推荐

  1. antd Select组件 和 Dropdown组件 踩坑·记

    目录 一.踩坑记 1.Select 组件需要显示 value 但传递给后台的是 key 2.Select 组件或 Dropdown 组件下拉框随页面上下滑动的问题 3.Select 组件滑动下拉框数据 ...

  2. win10系统用户:如何获得超级管理员权限(vue开发之Win10踩坑)

    作为win10系统的使用者Permission denied:cmd没权限.git没权限.npm没权限.delete文件夹也没权限.等等等:要权限没权限?或每次只给一次性权限?开发之痛,十指共愤! 如 ...

  3. Vue + TypeScript + Element 搭建简洁时尚的博客网站及踩坑记

    前言 本文讲解如何在 Vue 项目中使用 TypeScript 来搭建并开发项目,并在此过程中踩过的坑 . TypeScript 具有类型系统,且是 JavaScript 的超集,TypeScript ...

  4. vue中使用bootstrap4踩坑之旅

    bootstrapvue官网 bootstrap4中文官网 以下文章记录本人的踩坑过程,最后已亲测有效,但不保证是最简便的方法,最好的建议是去bootstrapvue官网看文档直接尝试. 一.引入jq ...

  5. Vue安装element ui踩坑

    在vue安装element ui 的过程中报了许多错误,慢慢踩坑,希望能帮到各位 1.  输入  vue add element    输入 y y zh-CN 如果报错  ERROR  comman ...

  6. 踩坑记15 动态路由 router.options.routes未更新 | vue升级 element-plus未适配vue3.2.x | vite glob导入动态加载组件,不能使用别名alias

    2021.8.12 坑50(vue-router4.addRoute().router.options.routes未更新):进行动态权限获取菜单的设置,使用了addRoute()来添加路由,但是ro ...

  7. Django Vue 项目踩坑记:The field admin.LogEntry.user was declared with a lazy reference to ‘xxx‘

    功能期望 基于Django提供的AbstractUser类重写User模型,在其中根据业务需求增加信息,并将新的用户模型设为系统默认用户模型. 问题描述 完成自定义User模型的编写,并在settin ...

  8. vue+elementUI项目的踩坑~~持续更新

    日常工作记录,如果对你有帮助请点亮小~心~心喔~~~ 接受礼貌的批评指导 目录: 1.el-form只有一个搜索条件时页面刷新问题: 2.el-tree树形控件,给项目安装jsx语法: 3.el-ca ...

  9. Vue路由history模式踩坑记录:nginx配置解决404问题

    问题背景: vue-router 默认是hash模式,使用url的hash来模拟一个完整的url,当url改变的时候,页面不会重新加载.但是如果我们不想hash这种以#号结尾的路径时候的话,我们可以使 ...

最新文章

  1. 朴素、Select、Poll和Epoll网络编程模型实现和分析——朴素模型
  2. @MappedSuperclass注解的使用说明
  3. java前后端用json传值_前后端——json的传值与接收(springMvc)
  4. mysql gno( )_MySql笔记(一)
  5. dwz框架中动态添加查找带回组件
  6. 在Spring Boot启动时运行代码
  7. 字符设备驱动高级篇2——字符设备驱动注册代码分析
  8. python 文件和目录操作题库
  9. 54.用环信实现聊天功能
  10. 'bout_magi
  11. julia :谈循还,row 与 col who first?
  12. Cross-compiling Apache httpd 2.2.19 for uclibc
  13. 三区三线划定-永久基本农田
  14. 基于matlab的图像识别分类实验(一)
  15. mysql身份证号的类型_MySQL--隐藏手机号、身份证号三种方式
  16. python中quadratic,Python: Using CVXOPT for quadratic programming
  17. 开发者除了技术硬实力之外,还有哪些不可或缺的软实力
  18. linux下jmeter性能测试
  19. 互联网短信网关接口协议(V3.0.0)
  20. synology nfs_如何手动和自动关闭和重新启动Synology NAS

热门文章

  1. java 字符串是否包含字符串_在Java中,如何检查字符串是否包含子字符串(忽略大小写)?...
  2. Win11任务栏图标重叠怎么办 Win11任务栏图标重叠的解决方法
  3. 火狐浏览器怎么关闭自动更新 火狐浏览器关闭自动更新的方法
  4. html5鼠标下拉浮窗固定,【前端技术】vue-floating-menu可拖拽吸附的浮窗菜单
  5. MySQL百万级/千万级数据存储解决方案
  6. IoT -- (九) IoT通讯技术选型与模型设计
  7. java中如何使用add方法_使用Java中的Calendar.add()方法将秒添加到当前日期
  8. 2021年广西艺术高考成绩查询,2021年广西美术高考成绩查询网址:https://www.gxeea.cn/...
  9. java类加载及new对象的过程
  10. 构造函数和实例化原理