vue 中 watch如何監聽陣列或物件中的某個值?
使用watch監聽陣列或物件時, 發現返回的新舊值是一樣的, 官方文件給出了答案 :
這需要使用到 this.$set方法 , 它接受三個引數 : (object / array , properyName / index , value) ,
看下例項 :
在 data中命名一個物件 a , 一個陣列 b :
data () {
retutn {
a : {name : 'lily', age : 18} ,
b : [
{name : '小明' , age : 14} ,
{name : '小紅' , age : 15}
]
}
} ,
在methods中對 a , b 進行操作 :
methods : {
set() {
this.$set(a , 'age' , 20);
this.$set(b, 1 , {name : '小紅' , age : 16} ;
}
}
在computed監聽新變數 , 一定要用JSON.parse 和 JSON.stringify 轉化一下, 不然watch監聽時返回的新舊值還是一樣的 .
computed : {
newA : function () {
return JSON.parse(JSON.stringify(this.a))
} ,
newB : function () {
return JSON.parse(JSON.stringify(this.b))
}
}
watch監聽 , handler函式的兩種寫法都是可以的, 但是不能使用箭頭函式 .
watch : {
newA : {
handler : function (newVal, oldVal) {
console.log(newVal,oldVal)
},
immediate : true //初始化頁面後立即監聽
} ,
newB : {
handler (newVal , oldVal) {
console.log(newVal , oldVal)
} ,
immediate : true
}
}
觸發set方法後 , 最後列印的結果 :
完結 , 撒花✿✿ヽ(°▽°)ノ✿
相關文章
- vue監聽input是否為空(監聽值為物件某個屬性)Vue物件
- js 取陣列中某個物件的集合JS陣列物件
- Vue:watch 監聽多個屬性值的方法Vue
- 監聽 watch props物件屬性監聽 或深度監聽物件
- Js陣列物件的屬性值升序排序,並指定陣列中的某個物件移動到陣列的最前面JS陣列物件排序
- vue是如何監聽陣列變化的Vue陣列
- 論如何監聽物件某個屬性的變化物件
- JS的平凡之路–模仿Vue寫個陣列監聽JSVue陣列
- JS的平凡之路--模仿Vue寫個陣列監聽JSVue陣列
- js如何判斷陣列中是否含有某個元素JS陣列
- 如何監聽陣列變化?陣列
- vue中如何監聽vuex中的資料變化Vue
- 監聽某個物件事件的幾種方法物件事件
- 合併陣列物件中相同的屬性值陣列物件
- vue3如何進行資料監聽watch/watchEffectVue
- 微信小程式中如何使用setData修改陣列或物件中的某一引數微信小程式陣列物件
- 如何從陣列中隨機取出幾個值組成新的陣列?陣列隨機
- 陣列物件按物件某個屬性排序陣列物件排序
- 微信分享、vue中select的v-model繫結(監聽enter鍵)、陣列物件重組(18/06/22)Vue陣列物件
- [分享]vue 實戰問題-watch 陣列或者物件Vue陣列物件
- vue2的監聽watch小爆料Vue
- js如何獲取指定陣列元素在陣列中的索引值JS陣列索引
- 二維陣列按照其內層陣列的某個鍵值排序陣列排序
- vue中陣列變動不被監測問題Vue陣列
- 使用不同方法查詢陣列中某個特定值(物件),並計算時間(個人練習)陣列物件
- vue監聽頁面中的某個div的滾動事件,並判斷滾動的位置Vue事件
- 去除陣列中的 null 值陣列Null
- JS 中特殊的物件-陣列JS物件陣列
- Javascript中的陣列物件排序JavaScript陣列物件排序
- vue watch陣列引發的血案Vue陣列
- 判斷某個陣列在不在物件裡陣列物件
- 如何過濾掉 PHP 陣列中的空值?PHP陣列
- js如何刪除陣列中重複的值JS陣列
- js如何獲取陣列中的最大值JS陣列
- iOS遍歷陣列相同值元素到另一陣列中同一物件的子陣列iOS陣列物件
- 如何將一個陣列中的元素插入另一個陣列陣列
- PHP 如何根據鍵值刪除一個陣列中的元素PHP陣列
- PHP 多維陣列排序-按某個 key 的值PHP陣列排序