Свойство Vue __ob__ находится в Object и создает ошибку синтаксического анализа json - PullRequest
0 голосов
/ 07 февраля 2019

У меня проблема в приложении Nuxt / Vue / Vuex, в которой наблюдаемое свойство __ob__ фактически присутствует в моем объекте, а не молчит.Т.е.

{lastname: "sfgsfdgsdfgs", __ob__: Observer}

снимок экрана ниже:

enter image description here

Длина моего Object.keys равна 2, и поэтому он передаетсяв мои вызовы API, вызывая ошибку синтаксического анализа JSON.

То, что я делаю, - это отправка, сравнение, было ли обновлено какое-либо из полей объекта, и, если это так, создание объекта с обновленными полями.и значение (я).Это для выполнения запроса PATCH к моему API.

Часть этого кода была написана предыдущим разработчиком.Поля формы связаны непосредственно с состоянием.

Существует объект contact, который является вычисляемым свойством,

computed: {
    ...mapState({
        contact(state) {
            return state.contact;
        },

У меня есть свойство origContact в моем data()свойство,

data() {
    return {
      origContact: null,

, которое задается при монтировании, как глубокий клон вычисляемого свойства contact,

mounted() {
      this.origContact = clonedeep(this.contact)

, которое использует библиотеку clonedeep из loadash 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__, но мне жаль, что оно там.

Любая помощь будет принята с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...