我在 vue 中有一个数据对象,看起来像这样
rows[
0 {
title: "my title",
post: "my post text",
public: false,
info: "some info"
},
1 {
title: "my title",
post: "my post text"
public: true,
info: "some info"
},
2 {
title: "my title",
post: "my post text"
public: false,
info: "some info"
}
]
然后我复制该对象并在需要时删除某些属性,然后再将对象发布到我的后端,如下所示:
var postData = this.rows;
postData.forEach(function(o) {
if (o.public === true) {
delete o.info;
}
});
var uploadData = {};
uploadData.blogpost = postData;
axios({
method: 'post',
url: myUrl,
responseType: 'json',
data: uploadData
})
问题是 --- delete o.info;
也会从我的虚拟机根数据中删除该属性,我不明白为什么,因为我创建了一个新变量/将根数据复制到那个变量中。那么,如何在不更改 vue 中的根数据 vm 的情况下,在发布数据之前从我的数据中删除某些对象属性?
原文由 user2722667 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要通过克隆来获取数据的副本。有多种克隆数据的方法,我推荐使用lodash的函数,
cloneDeep
postDataCopy = _.cloneDeep(postData)
然后你可以随意修改
postDataCopy
而不修改原来的。