<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
<title>监听属性基本实现方式总结</title>
</head>
<body>
<div id="app">
<h2>今天天气很{{info}}</h2>
<button @click='changeMeater()'>切换</button>
</div>
<script>
const vm = new Vue({
el: "#app",
data() {
return {
isHost: true
}
},
// 这是计算属性computed
computed: {
info() {
return this.isHost ? '炎热' : '寒冷'
}
},
methods: {
changeMeater() {
this.isHost = !this.isHost
console.log('------', vm)
}
},
//1. 监听方式1:new Vue 里面使用watch
// 监听属性值的变化
watch: {
isHost: {
// handler函数时候在isHost发生改变的时候调用 参数 :newValue , oldValue 是改变前后的值
// 案例:假设是做一个温度,就可以用前后的值相加减,做一些业务逻辑
handler(newValue, oldValue) {
console.log('isHost改变了', newValue, oldValue)
},
// immediate 是初始化时,让handler调用一下
immediate: true,
deep: true //开启深度监听功能,例如属性是一个对象的时候,可以监听到里面的属性
},
// 同理,改变后的info也可以监听
info: {
// handler函数时候在isHost发生改变的时候调用 参数 :newValue , oldValue 是改变前后的值
// 案例:假设是做一个温度,就可以用前后的值相加减,做一些业务逻辑
handler(newValue, oldValue) {
console.log('info改变了', newValue, oldValue)
},
// immediate 是初始化时,让handler调用一下
immediate: true,
},
},
})
/*
//2. 监听方式2,用vue的实例vm: 需要传两个参数,1 要监听谁,2.怎么监听
vm.$watch('isHost', {
// handler函数时候在isHost发生改变的时候调用 参数 :newValue , oldValue 是改变前后的值
// 案例:假设是做一个温度,就可以用前后的值相加减,做一些业务逻辑
handler(newValue, oldValue) {
console.log('isHost改变了', newValue, oldValue)
},
// immediate 是初始化时,让handler调用一下
immediate: true,
})
*/
</script>
</body>
</html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决