vue南吮,watch監(jiān)聽數(shù)據(jù)琳彩,數(shù)據(jù)監(jiān)聽
三個(gè)值:
1.第一個(gè)handler:其值是一個(gè)回調(diào)函數(shù)。即監(jiān)聽到變化時(shí)應(yīng)該執(zhí)行的函數(shù)部凑。
2.第二個(gè)是deep:其值是true或false露乏;確認(rèn)是否深入監(jiān)聽。(一般監(jiān)聽時(shí)是不能監(jiān)聽到對(duì)象屬性值的變化的涂邀,數(shù)組的值變化可以聽到瘟仿。)
3.第三個(gè)是immediate:其值是true或false;確認(rèn)是否以當(dāng)前的初始值執(zhí)行handler的函數(shù)比勉。
1劳较、watch使用的幾種方法
(1)通過watch監(jiān)聽data數(shù)據(jù)的變化
????watch: {
????????data(val,newval) {
????????????console.log(val)
????????????console.log(newval)
? ????????}
????}
(2)通過watch監(jiān)聽docData數(shù)據(jù)的變化驹止,數(shù)據(jù)發(fā)生變化時(shí),this.change_number++(使用深度監(jiān)聽)
????watch: {
????????docData: {
????????????handler(newVal) {
????????????????consle.log(newVal)
? ? ? ? ? ? ? },
? ? ? ? ? ?deep:true
? ????????}
????}
(3)通過watch監(jiān)聽data數(shù)據(jù)的變化观蜗,數(shù)據(jù)發(fā)生變化時(shí)臊恋,執(zhí)行方法
????watch:{
????????data:'changeFun'// 值可以為methods的方法名
????},
????methods:{
? ????changeFun (curVal, oldVal) {
? ????? conosle.log(curVal, oldVal)
????? }
????}
2、immediate墓捻、handler和deep屬性
(1)immediate和handler
在最初綁定值的時(shí)候也執(zhí)行監(jiān)聽抖仅,則就需要用到immediate屬性。
watch: {
????docData: {
????????handler(newVal) {
? ? ? ? ? ? ?this.change_number++
? ? ????},
????????immediate:true
? ????}
}
(2)deep
深度監(jiān)聽砖第,監(jiān)聽對(duì)象的屬性
watch: {
????docData: {
????????handler(newVal) {
????????console.log(newVal)
? ????? },
????????deep:true
? ????}?
}
設(shè)置deep:true則可以監(jiān)聽到對(duì)象中的屬性的變化撤卢,例如data.data_id,如果監(jiān)聽整個(gè)data那么消耗會(huì)大梧兼,因此直接監(jiān)聽改變的那個(gè)值:
watch:{
????'data.data_id':{
????????handler(newVal,oldVal){
????????????console.log(newVal)
????????????console.log(oldVal)
? ? ????},
????????deep:true
? }?