我的Nuxt / Vue / Vuex应用程序出现问题,其中__ob__
可观察的属性实际上存在于对象中,而不是保持沉默。即
{lastname: "sfgsfdgsdfgs", __ob__: Observer}
下面的屏幕截图:
我的Object.keys
的长度为2,因此将其传递给我的API调用,从而导致JSON解析错误。
我正在做的是提交,比较对象的任何字段是否已更新,如果有,则使用更新的字段和值创建一个对象。用于执行对我的API的PATCH请求。
其中一些代码是由以前的开发人员编写的。表单字段直接绑定到状态。
有一个contact
对象,它是一个计算属性,
computed: {
...mapState({
contact(state) {
return state.contact;
},
我的origContact
属性中有一个data()
属性,
data() {
return {
origContact: null,
正在安装的作为计算属性contact
的深层克隆,
mounted() {
this.origContact = clonedeep(this.contact)
这是使用loadash中的clonedeep
库
import clonedeep from 'lodash.clonedeep'
提交后,我正在运行以下内容,
getPatchFields(newObj, oldObj) {
let patchObj = {}
let properties = Object.getOwnPropertyNames(newObj)
for (let i = 0; i < properties.length; i++) {
let propName = properties[i]
if (newObj[propName] !== oldObj[propName]) {
patchObj[propName] = newObj[propName]
}
}
return patchObj
},
async submitHandler() {
try {
let changedContactFields = this.getPatchFields(this.contact, this.origContact)
console.log('TCL: submitHandler -> changedContactFields', changedContactFields)
changedContactFields
对象是__ob__
属性显示为硬属性的地方。
以前有人遇到过这个问题吗?
当然,我可以省略__ob__
属性来创建一个新对象,但这使我很困惑。
任何帮助将不胜感激!