国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

vue中的watch監聽數據變化及watch中各屬性的詳解

2024-05-06 15:30:15
字體:
來源:轉載
供稿:網友

首先確認 watch是一個對象,一定要當成對象來用。 

對象就有鍵,有值。

鍵:就是你要監控的那個家伙,比如說$route,這個就是要監控路由的變化。或者是data中的某個變量。
值可以是函數:就是當你監控的家伙變化時,需要執行的函數,這個函數有兩個形參,第一個是當前值,第二個是變化后的值。

值也可以是函數名:不過這個函數名要用單引號來包裹。 

 第三種情況厲害了。

值是包括選項的對象:選項包括有三個。

1.第一個handler:其值是一個回調函數。即監聽到變化時應該執行的函數。
2.第二個是deep:其值是true或false;確認是否深入監聽。(一般監聽時是不能監聽到對象屬性值的變化的,數組的值變化可以聽到。)
3.第三個是immediate:其值是true或false;確認是否以當前的初始值執行handler的函數。

1、watch使用的幾種方法

(1)通過watch監聽data數據的變化,數據發生變化時,就會打印當前的值

watch: {  data(val, newval) {    console.log(val)    console.log(newval)  } }

(2)通過watch監聽docData數據的變化,數據發生變化時,this.change_number++(使用深度監聽)

watch: {  docData: {   handler(newVal) {    this.change_number++   },   deep: true  }}

(3)通過watch監聽data數據的變化,數據發生變化時,執行changeData方法

watch: {  data: 'changeData' // 值可以為methods的方法名},methods: {   changeData(curVal,oldVal){      conosle.log(curVal,oldVal)  }}

2、詳解watch中的immediate、handler和deep屬性

(1)immediate和handler

這樣使用watch時有一個特點,就是當值第一次綁定時,不會執行監聽函數,只有值發生改變時才會執行。如果我們需要在最初綁定值的時候也執行函數,則就需要用到immediate屬性。

eg:

watch: {   docData: {    handler(newVal) {      this.change_number++    },    immediate: true   }}

(2)deep

當需要監聽一個對象的改變時,普通的watch方法無法監聽到對象內部屬性的改變,此時就需要deep屬性對對象進行深度監聽。

eg:data() {  return {    docData: {      'doc_id': 1,      'tpl_data': 'abc'    }  }},watch: {   docData: {    handler(newVal) {      this.change_number++    },    deep: true  }  }

設置deep:true則可以監聽到docData.doc_id的變化,此時會給docData的所有屬性都加上這個監聽器,當對象屬性較多時,每個屬性值的變化都會執行handler。如果只需要監聽對象中的一個屬性值,則可以做以下優化:使用字符串的形式監聽對象屬性:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 仁化县| 林州市| 曲麻莱县| 辉县市| 容城县| 施秉县| 巴塘县| 肥乡县| 祁门县| 仁寿县| 墨竹工卡县| 宁夏| 岐山县| 临西县| 从化市| 兴国县| 阿巴嘎旗| 武安市| 兴业县| 高邮市| 姚安县| 土默特左旗| 清原| 南川市| 蒙自县| 昌邑市| 四川省| 罗田县| 兴文县| 尤溪县| 新津县| 舒城县| 祁连县| 静宁县| 商南县| 乐清市| 鄂托克旗| 垣曲县| 旌德县| 铁力市| 巩留县|