2016-12-13 118 views
0

我正在嘗試使用'watch'來跟蹤和響應產品對象的更改。因爲我看的對象,而不是一個簡單的字符串,說,我使用的是深形式:

watch: { 
     product: { 
      handler: function (val, oldVal) { 
       console.log("Current = "+val.identifier);//example field 
       console.log("Old = "+oldVal.identifier); 
      }, 
      deep: true 
     }, 
    }, 

東西是不完全正確,但是,因爲在這個例子中,當我登錄改變一個字段中的'標識符',舊的和新的值總是相同的(均顯示正確的當前值)。

這是什麼引發了這種變化,爲什麼兩個值可能是相同的?

+0

在演示該行爲的代碼片段或展開器中創建示例。這裏沒有足夠的建議來告訴你。 –

+0

您如何更改「產品」,您是否可以在產品更改的地方包含該代碼? – Saurabh

+0

在一個例子中複製稍微複雜。但簡單地說,我有一個自定義的「文本字段」輸入組件,用法如下:''。文本字段組件有一個輸入標籤,其中包含一個輸入標籤:'。所以它只是簡單地使用V模型。我沒有得到的是價值是如何相同的,但它是更新的。我認爲美元觀察的目的是在變化時被調用,這意味着新舊價值應該總是不同。 –

回答

2

這是從​​:

注:突變時(而不是更換)的對象或Array,舊的值將是相同的新的值,因爲它們引用相同的對象/陣列。 Vue不保留pre-mutate值的副本。