Vue __ob__属性在Object中并创建json解析错误

时间:2019-02-07 00:10:50

标签: javascript json vue.js vuejs2 vuex

我的Nuxt / Vue / Vuex应用程序出现问题,其中__ob__可观察的属性实际上存在于对象中,而不是保持沉默。即

{lastname: "sfgsfdgsdfgs", __ob__: Observer}

下面的屏幕截图:

enter image description here

我的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中的clonedeepimport 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__属性来创建一个新对象,但这使我很困惑。

任何帮助将不胜感激!

0 个答案:

没有答案