vue物件拷貝,解決由於引用賦值修改原物件的方法
在vue專案中,遇到了一個問題,前端需要將後臺返回的資料展示在介面上,但是由於多了一個修改功能,點選修改按鈕會彈出一個彈框,彈框所有要修改的內容和之前展示的一樣,在彈框裡修改原來介面的值也會一起變化,這顯然不太合適(問題不好描述,直接上程式碼吧)
<!-- 展示的介面-->
<el-form-item label="手機號">
<el-input v-model="form.account"></el-input>
</el-form-item>
<!-- 修改的彈框-->
<el-dialog>
<el-form-item label="手機號">
<el-input v-model="form.account"></el-input>
<el-input v-model="newForm.account"></el-input>
</el-form-item>
</el-dialog>
export default {
data() {
return {
form: {},
newForm:{}
}
},
methods: {
request() {
//這裡是請求的方法,懶得寫了,因為返回的資料才是要處理的重點
this.$post('xxx/xxxx',params)
.then(res=>{
//將返回的資料直接賦值給form,然後直接在介面上展示
this.form = res;
//這時候問題就來了,因為彈框要修改的內容也是同樣的資料,如果使用同一個物件this.form,
//那麼在彈框裡修改的是同一個物件
//即使新建一個物件再用返回的資料給它賦值,結果也是相同的,因為物件的賦值是引用賦值
//this.newForm = res;
//解決方法其實挺簡單,Object.assign解決,
this.newForm = Object.assign({}, res)
//使用上面這個方法是完全複製了一個新的物件,即使修改這個newForm也不會影響form
})
}
}
}
相關文章
- Python - 物件賦值、淺拷貝、深拷貝的區別Python物件賦值
- vue物件的拷貝Vue物件
- vue的深度拷貝物件Vue物件
- js陣列物件複製拷貝不改變原來的值,深拷貝JS陣列物件
- 物件拷貝 - 優雅的解決方案 Mapstruct物件Struct
- PHP 物件導向 - 物件的淺拷貝與深拷貝PHP物件
- jquery之物件拷貝深拷貝淺拷貝案例講解jQuery物件
- 賦值、淺拷貝與深拷貝賦值
- 物件深拷貝和淺拷貝物件
- 物件拷貝方式物件
- 【JavaScript】物件的淺拷貝與深拷貝JavaScript物件
- php之普通變數賦值、物件賦值、引用賦值的區別PHP變數賦值物件
- 操作字元、物件方法, 深淺拷貝字元物件
- 實現物件淺拷貝、深拷貝物件
- 聊聊物件深拷貝和淺拷貝物件
- JavaScript中物件的拷貝JavaScript物件
- JavaScript物件的深拷貝以及淺拷貝分析JavaScript物件
- 【Python】直接賦值,深拷貝和淺拷貝Python賦值
- PHP 物件導向 (四)類物件賦值為引用傳遞PHP物件賦值
- 引用、淺拷貝及深拷貝 到 Map、Set(含物件assign、freeze方法、WeakMap、WeakSet及陣列map、reduce等等方法)物件陣列
- 淺析賦值、淺拷貝、深拷貝的區別賦值
- 詳解js中的物件的深淺拷貝JS物件
- JavaScript 物件解構賦值JavaScript物件賦值
- 給妹子講python-S01E11賦值與物件拷貝機制分析Python賦值物件
- js資料型別賦值,淺拷貝,深拷貝JS資料型別賦值
- C++之Big Three:拷貝構造、拷貝賦值、解構函式探究C++賦值函式
- ES6 變數宣告與賦值:值傳遞、淺拷貝與深拷貝詳解變數賦值
- 三目運算、物件克隆、深拷貝和淺拷貝物件
- 關於 js 物件 轉 字串 和 深拷貝 的 探討JS物件字串
- javascript對深拷貝物件的研坑JavaScript物件
- 談談Objective-C的物件拷貝Object物件
- 龍叔python-直接賦值,深拷貝,淺拷貝的簡單解析Python賦值
- 拋磚引玉:拷貝物件,CopyObject物件Object
- js物件實現深淺拷貝!!JS物件
- 瞭解一下js物件深拷貝與淺拷貝(前端開發面試)JS物件前端面試
- 物件賦值轉換物件賦值
- 一文搞懂Java引用拷貝、淺拷貝、深拷貝Java
- 漫畫|有趣的瞭解一下賦值、深淺拷貝賦值