vxe-table踩坑记录

1.添加一条新数据 使用vxe inserAt()会放在暂存里 没有响应式,我们的tableData目前获取不到这条数据,保存时就没有哦 保存不上 

需要直接使用tableData.value.push()

第二个坑又来了

这样子直接push 会出现两条数据一样的情况

我们使用push向数组中添加多条相同的数据,修改其中一条数据,其他的数据随之改变。

出现这个问题的原因是,push的并不是一个值,而是一个地址

数组都指向同一个地址,就好比data.itemList[0]和 data.itemList[1]都是指向item的。每一次push就等于改变了数组的地址,所以会导致每个元素都变成了最后push的内容 

方法一 放在一个function里 return结果

const defaultData = () => {
	return {
		id: "",
		parentId: 0,
		subsidyType: "1",
		subsidyName: "",
		subsidyAmt: 0,
	};
};
const onAddItem = () => {
	tableData.value.push(defaultData());
};

方法二 使用深拷贝

const record = {
	id: processID(),
	parentId: 0,
	subsidyType: "1",
	subsidyName: "",
	subsidyAmt: 0,
};
const onAddItem = () => {
	let res = JSON.parse(JSON.stringify(record));
	tableData.value.push(res);
};

现在就好了

2. 在给tableData重新赋值时,想push push不生效

因为vxe特点是,创建列表时会将数据重新包装,生成树,我没注意 多写了这个配置tree-config,他包装后只展示一开始的数据,在数据改变时不会再触发包装数据行为,但是也没报错

只有一个warning

删掉就好了~~~

vue实现可新增、删除、修改、复制、复原及提交的表格_vxe-table keep-source是什么意思-CSDN博客

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值