鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ vue的watch屬性,當(dāng)監(jiān)聽的值改變了卻不能觸發(fā)事件

vue的watch屬性,當(dāng)監(jiān)聽的值改變了卻不能觸發(fā)事件

我在子組件中用watch監(jiān)聽了父組件傳過(guò)來(lái)的值,但是當(dāng)這個(gè)值改變了之后,watch并沒有被觸發(fā)

props:[
  'chartMessage'
],
watch:{
  chartHandle(val){
    console.log(1111)
  }
},
mounted(){
  this.chartHandle = this.chartMessage;
},
data() {
  return{
    chartHandle:{},
  }
},

我這個(gè)chartMessage改變之后,連console.log()也沒有觸發(fā),是怎么回事,求指教。。

回答
編輯回答
真難過(guò)

props 內(nèi)部是自帶監(jiān)聽的

多看看文檔

你如果想通過(guò)props 傳值觸發(fā)某個(gè)事件 可以去給data里面一個(gè)值去賦值
然后監(jiān)聽

2017年10月31日 11:02
編輯回答
愛是癌

watch只有在監(jiān)聽的值變化的時(shí)候才會(huì)觸發(fā),chartMessage初始化的時(shí)候不會(huì)觸發(fā)watch,只有在父組件再次改變了chartMessage時(shí)才會(huì)觸發(fā)watch,也就是說(shuō)至少要有兩次變化

2017年6月2日 05:52
編輯回答
半心人

如果你的chartMessage傳入的是對(duì)象,你只改對(duì)象內(nèi)的值不會(huì)觸發(fā)watch,你可以這么寫:

watch:{
  chartMessage: {
    deep: true,
    handler(val){
        console.log(111)
        this.drawChart(val)
    }
  }
}

如果不是這種情況,建議你做一個(gè)小demo復(fù)現(xiàn)一下情況,再把所有代碼放出來(lái)

2018年3月5日 17:02
編輯回答
涼薄

監(jiān)聽的是 data 里的值

2017年7月19日 15:13
編輯回答
涼汐

講道理不會(huì)出現(xiàn)這個(gè)情況,給個(gè)在線調(diào)試的列子看下

2018年9月4日 00:58