2016-12-13 164 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值的副本。