Vue中watch监听器的使用

使用watch监听器

<template>
  <div id="app">
    <input type="text" v-model="msg" />
    <input type="text" v-model="name" />
    <input type="text" v-model="info.password" />
    <input type="text" v-model="info.username" />
  </div>
</template>
<script>
export default {
  name: "App",
  data() {
    return {
      msg: "",
      name: "admin",
      info: {
        username: "",
        password: "",
      },
    };
  },
  // 新值在前 旧的在后  应用场景  判断用户名是否占用
  watch: {
    // 方法监听器只能手动触发
    msg(newval, oldval) {
      console.log("新的值", newval);
      console.log("旧的值", oldval);
    },
    // 对象监听器  可以让监听器一进页面就触发
    name: {
      // handler是监听器自带的的处理函数
      handler(newval, oldval) {
        console.log("新的值", newval);
        console.log("旧的值", oldval);
      },
      // 可以一进页面就触发监听器  监听器自带的immediate
      immediate: true,
    },

    // deep深度监听
    info: {
      handler(newval, oldval) {
        console.log("新的值", newval);
        console.log("旧的值", oldval);
      },
      // deep是否开启深度监听   只要对象中任何一个属性有变化都会触发监听器
      deep: true,
    },

    // 直接监听对象的子属性
    "info.username"(newval, oldval) {
      console.log("新的值", newval);
      console.log("旧的值", oldval);
    },
  },
};
</script>

 

posted @ 2022-02-20 23:14  热爱前端的5号机器  阅读(182)  评论(0编辑  收藏  举报