два объекта имеют одинаковое значение - PullRequest
0 голосов
/ 28 мая 2019

Оба объекта одинаковы при редактировании. показать решение для разделения объектов. У меня есть объект, и с помощью v-модели я привязываю его к входам, чтобы обновить его, но когда я редактирую его, но не сохраняю изменения, объект изменяется. чтобы не возникало этой ситуации, я использую второй объект (временный) при редактировании, я использую этот объект, но опять же он меняет первый объект.

data(){
   return{
      user:{
        id:'',
        firstname:'',
        lastname: ''
      },
    tuser:{}
     }
  },
 mounted(){
     axios.get('/user')
         .then((response) => {
              this.user = response.data  
             })
         .catch(error)
    },
 methods:{
      edit(){
      this.tuser = this.user
      },
 update(){
      axios.patch(`/user/${this.tuser.id}`,this.tuser)
         .then((response)=>{
                 this.user = this.tuser
          })
       .error()
      }
 }

Ответы [ 3 ]

0 голосов
/ 28 мая 2019
methods:{
  edit(){
  this.tuser = this.user
  },

Я думаю, вам просто нужно передать клонированную копию this.user, этого можно добиться с помощью таких методов lodash / underscore.js, как clone или cloneDeep .Если вы не копируете свой объект, они ссылаются на один и тот же объект

0 голосов
/ 28 мая 2019

Вы изменяете эталонное значение, не имеет значения, какое из них вы меняете - они оба обновляются, поскольку у них один и тот же адрес в куче памяти.

Поэтому используйте ES6 spread для создания клона, когда вы пытаетесь получить копию какого-либо ссылочного значения.

this.user = { ...this.tuser }

или

this.tuser = { ...this.user }

Ссылки: spread_es6

0 голосов
/ 28 мая 2019

Скорее всего, потому что вы ссылаетесь один объект на другой.Поскольку объекты являются ссылочными, а не примитивными значениями.Что это означает: если вы сделаете obj1 = obj2, то на самом деле они оба будут указывать на один и тот же объект, если вы измените один, другое изменение тоже.Вам нужно использовать что-то вроде Object.assign () https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

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