<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <script type="text/javascript" src="../js/vue.js"></script> <title>监视属性深度监视</title> </head> <body> <!-- vue中的watch 默认不监视对象属性中的内部值的改变 配置deep:true可以监视对象内部值的改变(多层) 备注: vue自身可以检测对象内部值改变,但是vue提供的watch默认不可以 使用watch需要根据对象的结构决定是否采用深度监视 --> <div id="root"> <h1>今天天气{{inFo}}</h1> <!-- 绑定事件的时候,事件 @xxx="yyy",yyy可以写一些简单的语句 --> <!-- <button @click="isHot=!isHot">切换天气</button> --> <button @click="chang">切换天气</button ><br> <h1>a的值是{{numbers.a}}</h1> <button @click="numbers.a++">点我a+1</button> <br> <h1>b的值是{{numbers.b}}</h1> <button @click="numbers.b++">点我b+1</button> </div> <script> const vm=new Vue({ el:"#root", data:{ isHot:true, numbers:{ a:1, b:1 } }, methods: { chang(){ this.isHot=!this.isHot; } }, computed:{ inFo(){ return this.isHot ? '炎热' : '凉爽'; } }, watch:{ isHot:{ // immediate:true,//初始化时让handler调用一下 //handler在isHot发生改变时触发 handler(newValue,oldValue){ console.log(newValue,oldValue) } }, /* //监视多级结构中某个属性的变化 "numbers.a":{ handler(){ } } */ //监视多级结构中所有属性的变化 numbers:{ deep:true, handler(){ } } } }) // vm.$watch("isHot",{ // // immediate:true,//初始化时让handler调用一下 // //handler在isHot发生改变时触发 // handler(newValue, oldValue) { // console.log(newValue, oldValue) // } // }) </script> </body> </html>