Vue 监视属性
当被监视的属性变化时,回调函数handler()自动调用,进行相关操作
 监视的属性必须存在,才能进行监视
 监视的两种方法:
 (1).new Vue时传入watch配置
 (2)通过vm.$watch监视
<body>
	<div id="root">
		<h2>今天的天气很{{info}}</h2>
		<button @click="changeWeather">切换天气</button>
	</div>
</body>
<script>
	new Vue({
		el:"#root",
		data:{
			isHot:true
		},
		methods:{
			changeWeather(){
				 this.isHot = !this.isHot
			}
		},
		computed:{
			info(){
				return this.isHot ? '炎热' : '凉爽'
			}
		},
		watch:{
			isHot:{
				//初始化时让handler调用一下
				immediate:true,
				//handler什么时候调用?当isHot发生改变时
				//newValue是修改后的值,oldValue修改前的值
				handler(newValue,oldValue){
					
				}
			}
		}
	})
</script>
另一种办法
vm.$watch('isHot',{
	immediate:true,
	handler(newValue,oldValue){
					
	}
})
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 
深度监视
deep:true
<body>
	<div id="root">
		<h2>{{number.a}}</h2>
		<button @click="number.a++">a+1</button>
	</div>
</body>
<script>
	new Vue({
		el:"#root",
		data:{
			number:{
				a:100
				b:200		
			}
		},
		watch:{
			number:{
				deep:true,
				handler(){
					console.log('number改变了');
				}
			}
		}
	})
</script>
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 
监视属性简写
当所监视的属性只需要handler时,我们就可以使用简写形式
watch:{
	number(newValue,oldValue){
		console.log('123')
	}
}
- 1
 - 2
 - 3
 - 4
 - 5
 
另一种配置监视属性的方法
vm.$watch('number',{
	immediate:true,
	deep:true,
	handler(newValue,oldValue){
		console.log('abc');
	}
})
//简写
vm.$watch('isHot',function(newValue,oldValue){
	console.log('abc')
})
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 

                


















