vue中watch监听数据改变

首先确认 watch是一个对象,一定要当成对象来用。 
对象就有键,有值。 
键:就是你要监控的那个家伙,比如说$route,这个就是要监控路由的变化。或者是data中的某个变量。 
值可以是函数:就是当你监控的家伙变化时,需要执行的函数,这个函数有两个形参,第一个是当前值,第二个是变化后的值。 
值也可以是函数名:不过这个函数名要用单引号来包裹。 
第三种情况厉害了。 
值是包括选项的对象:选项包括有三个。

第一个handler:其值是一个回调函数。即监听到变化时应该执行的函数。
第二个是deep:其值是true或false;确认是否深入监听。(一般监听时是不能监听到对象属性值的变化的,数组的值变化可以听到。)
第三个是immediate:其值是true或false;确认是否以当前的初始值执行handler的函数。

例一:
var vm = new Vue({
  data: {
    a: 1,
    b: 2
  },
  watch: {
    a: function (val, oldVal) {
      console.log('new: %s, old: %s', val, oldVal)
    },
    // 方法名
    b: 'someMethod',
    // 选项的对象
    c: {
      handler: function (val, oldVal) { /* ... */ },
      deep: true,
      immediate: true
    }
  }
})

例二:

<body>

<div id="app">

    <input type="text" v-model="firstname">

    <input type="text" v-model="lastname">

    <input type="text" v-model="quanname">

</div>

<script src="lib/vue-2.4.0.js"></script>

<script>

new Vue({

        el:'#app',

        data:{

            firstname:'',

            lastname:'',

            quanname:''

        },

        methods:{ },

        watch:{//监听指定数据的变化,只要变化就会触发

            'firstname':function (newVal, oldVal) {

                console.log(newVal, oldVal)

                this.quanname = newVal + this.lastname;

            },

            'lastname': function (newVal, oldVal) {

                this.quanname = this.firstname + newVal;

            }

}

    })

</script>

 

猜你喜欢

转载自blog.csdn.net/weixin_44389107/article/details/89353890