vue 2つのオブジェクトが値を付けた後、ずっと等しいか、1つのオブジェクトを変更して別のオブジェクトを変更して問題を変更します.

2355 ワード

vueでオブジェクトを定義すると
var obj1 = {
	index:1,
	name:first
}

var x = obj1;

obj1.index = 2;

console.log(x.index)

この結果も2であり,vueがobj 1のアドレスをxに与えたため,xが実際に指向するobj 1がポインタに相当する.今日も実際のアプリケーションでは、より隠れたバグが見つかりました.
load(){
	this.old = []
},
add(){
	this.news={
		index:'',
		name:'',
		val:''
	}
},
quit(){
	this.news = this,old;
},
save(){
	this.old = this.news;
}

これはフォームのコミットであり、コミットはページで別のdivを切り替えます.oldデータを定義し、キャンセルすると元のデータに戻ります.しかし、テスト中に1つの問題が発生しました.1回目のキャンセルは問題なく、2回目のキャンセルnewsに値があります.これは不可能です.2回のキャンセルで最初の値を返す必要があります.問題はここにある.news = this.old.これは実際にoldとnewsがバインドされていることを意味し、初めてキャンセルしたときにoldとnewsのバインドが行われています.vue内部の問題かどうかはわかりませんが、2回目のadd()でnewsに値を割り当てるのも実際にoldに値を付け、その後quit()を実行する場合、this.news=this.oldは実際には
this.news = {
		index:'',
		name:'',
		val:''
	}

その前にoldは
{
		index:'',
		name:'',
		val:''
}

ここでの解決策は,付与時にjsonフォーマットを回すことであり,アドレスではない.
this.old = JSON.parse(JSON.stringify(this.news));

誤りがあればご指摘ください