У меня проблема в приложении Nuxt / Vue / Vuex, в которой наблюдаемое свойство __ob__
фактически присутствует в моем объекте, а не молчит.Т.е.
{lastname: "sfgsfdgsdfgs", __ob__: Observer}
снимок экрана ниже:
Длина моего 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__
, но мне жаль, что оно там.
Любая помощь будет принята с благодарностью!