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博客