Vue学习笔记5:监视属性

发布时间 2023-11-05 18:29:29作者: MyMemo

5. 监视属性

在watch中通过一个配置(isHot),监视data中的isHot这个属性,以及info这个计算属性。

<!--准备好一个容器-->
<div id="root">
    <h2>今天天气很{{info}}</h2>
    <!--绑定事件的时候:@xxx="yyy" yyy可以写一些简单的语句-->
    <!--<button @click="isHot = !isHot">切换天气</button>-->
    <button @click="changeWeather">切换天气</button>
</div>

<script type="text/javascript">
    Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。

    const vm = new Vue({
        el: '#root',
        data: {
            isHot: true
        },
        computed: {
            info() {
                return this.isHot ? '炎热' : '凉爽'
            }
        },
        methods: {
            changeWeather() {
                this.isHot = !this.isHot
            }
        },
        watch: {
            isHot: {
                immediate: true, //初始化时让handler调用一下
                //hander什么时候调用?当isHot发生改变时。
                handler(newValue, oldValue) {
                    console.log('isHot被修改了', newValue, oldValue);
                }
            },
            info: {
                immediate: true, //初始化时让handler调用一下
                handler(newVal, oldVal) {
                    console.log('info被修改了', newVal, oldVal);
                }
            }
        }
    })
</script>

也可以换如下这种方式来监视属性:

vm.$watch('isHot', {
    immediate: true, //初始化时让handler调用一下
    //hander什么时候调用?当isHot发生改变时。
    handler(newValue, oldValue) {
        console.log('isHot被修改了', newValue, oldValue);
    }
});