美文网首页程序员vue
vue watch对象内的属性监听

vue watch对象内的属性监听

作者: 形影相随_371e | 来源:发表于2018-07-04 16:03 被阅读413次

    vue可以通过watch监听data内数据的变化。通常写法是:

    new Vue({
      data: {
        a: 100,
        msg:{
            channel:'音乐',
            style:'活泼'
        }
      },
      watch: {
        a: function (newval, oldVal) {
          console.log('new: %s, old: %s', newval, oldVal)
        }
      }
    })
    

    但是如果你要监听的数据是对象内的某一属性,直接watch对象的属性(eg:msg.channel)就会报错

    而监听整个对象的时候(eg:msg)会发现无论何时newval和oldVal的值都是一样的,这是因为msg这个对象的指向并没有发生改变,所以需要深度监测

    watch: {
        msg: {
            handler(newValue, oldValue) {
                console.log(newValue)
            },
            deep: true
        }
    }
    

    如果监听对象内的某一具体属性,可以通过computed做中间层来实现

    computed: {
        channel() {
            return this.msg.channel
        }
    },
    watch:{
        channel(newValue, oldValue) {
            console.log('new: %s, old: %s', newval, oldVal)
            //这里面可以执行一旦监听的值发生变化你想做的操作
        }
    }
    

    我的博客

    我的博客

    相关文章

      网友评论

        本文标题:vue watch对象内的属性监听

        本文链接:https://www.haomeiwen.com/subject/keneuftx.html