2018年3月1日 星期四

讓object data 下的屬性異動可以觸發 watch

data內設定了obj物件
obj下的屬性如果異動
設定在data下的各個屬性,如果發生異動 應該就會觸發watch
但若屬性為object,而object下的prop被異動要能夠觸發watch
有兩種處理方式
1.宣告data時同時把下層的屬性都宣告

data(){
  return {
    obj:{x:1,y:1}
  }
}
methods:{
  update(){
    this.obj.x = 2
  }
}
2.宣告data時不宣告下層
改變下層屬性 透過$set執行

data(){
  return {
    obj:{}
  }
}
methods:{
  update(){
    this.$set(this.obj,x,2)
  }
}
3.若要改變的屬性是 array
即使是改變arry下一個物件的一個屬性,也是要把整個物件換掉
data(){
  return{
    arr:[
      {x:1,y:2},
      {x:100,y:23}
      ]
  }
},
methods:{
  update(){
    let newObj = {x:1,y5}
    this.$set(this.arr,0,newObj)
  }
}