姓名案例-watch实现

64 阅读1分钟

复制前面‘08-计算属性的4.姓名案例-计算属性简写’进行改写和对比

  <div id="root">
    姓:<input type="text" v-model="firstname"><br><br>
    名:<input type="text" v-model="lastname"><br><br>
    全名:<span>{{fullname}}</span>
    <!-- <span>{{a}}</span> -->
</div>

<script>

    //创建Vue实例
    const vm = new Vue({
        el: '#root',//el用于指定当前Vue实例为哪个容器服务,值通常为css选择器字符串
        data: {//data用于储存数据,数据供el指定的容器使用,值我们先暂时写成一个对象
            firstname: '张',
            lastname: '三',
            fullname: '张-三',
            // x: 1,
            // y: 2
        },
        computed: {
            // a() {
            //     return this.x + this.y
            // }
        },
        watch: {

            firstname(val) {
                setTimeout(() => {
                    this.fullname = val + '-' + this.lastname
                }, 1000);

            },
            lastname(val) {
                setTimeout(() => {
                    this.fullname = this.firstname + '-' + val
                }, 1000);

            }
        }
    })

</script>

image.png

在前面‘08-计算属性的4.姓名案例-计算属性简写’中的conputed添加settimeout会变成这样

image.png

总结

image.png