下面是我想做的事情:我有一个组件,它的一个数据是从一个共享对象中读取的,每次值发生变化时,我都想知道并做些什么。所以我决定用手表来观察那块房子。下面是我的代码:
export default {                                          
data: function () {
  return {
    index: sharedData
  }
}, 
watch: {
  'index': function (val) {
       doSmething()
  }
} 
}我的sharedData非常简单,只是为了演示:
let shatedData = {                                         
  testIndex: 0
}正如指南所述,sharedData是一个对象。但是问题来了:这个组件中的sharedData更改,或者其他组件中的事件,可以在index属性中正确地显示,但是watch函数从未被触发(也许我在监听一个对象更改,但它的结构仍然相同)。那么,我如何才能让这个组件知道一个特定的共享数据更改了呢?
发布于 2017-03-18 19:18:19
答案@ericchan1336在Vue论坛上复制,以供参考:
因为索引属性本身从未改变-它总是包含相同的对象,只有该对象中的属性会发生变化,因此永远不会触发watch函数。
对于这些情况,有deep: true选项,它使手表检查嵌套在监视属性中的深度更改:
watch: {
  'index': {
    deep: true,
    handler: function (val) {
       doSmething()
     }
   }
}
https://stackoverflow.com/questions/38344827
复制相似问题