簡體   English   中英

Vue V-Model 改變多個對象

[英]Vue V-Model changes multiple Objects

當我在 vue 中使用掛載的 function 在數據區域中分配兩個不同的對象並將其中一個綁定到一個表單時,我遇到了一個奇怪的問題:兩個對象都隨着表單中值的輸入而改變

例子:

<template>
    <v-card>
        <v-form>

        <v-text-field
        v-model="newProduct.name"
        ></v-text-field>

        <v-text-field
        v-model="newProduct.price.net"
        ></v-text-field>

        </v-form>
    </v-card>
  
</template>

<script>
export default {
    data() {
        return {
            originalProduct: {}
            newProduct:{}
        }            
    },
    mounted () {
        const productFromApi = {
            name: 'test'
            price: {
                net:20
            }
        }
        this.originalProduct = productFromApi
        this.newProduct = productFromApi
    }
}
</script>

在此示例中,當編輯表單時, originalProduct也會更改

當我用Object.assign分配對象時,僅內聯 object price變化與綁定的 object newProduct

我不想, originalProduct的產品被改變了

有人對此有解決方案嗎?

如果要完全隔離更改,則需要對 object 進行深拷貝:

this.newProduct = JSON.parse(JSON.stringify(productFromApi))

分配時,您為 originalProduct 和 newProduct 提供了對 object productFromApi 的引用。 因此,當您修改 productFromApi 時,兩者都會反映出更改。

嘗試像這樣克隆對象:

   this.originalProduct = {...productFromApi}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM