vue watch对象内的属性监听

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概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 12,039评论 0 25
  • vue 2.0 渐进式框架 MVC 单向通信 > m:model 数据层 保存数据 > v:view视图层 用户界...
    web前端ling阅读 4,172评论 0 0
  • 时光匆匆,不知不觉,2018已走过两个月的时光。 话说,这是一个奋斗的年,这是一个学习的年。 不管前路是艰难是险阻...
    美乐君霞阅读 1,345评论 0 1
  • 文/隆贤俊 不是贪欲在作祟,是有时候真的想让自己更全能、更优秀一点,但我们却不得不接受现实的告诫:没有人是完美的。...
    隆贤俊阅读 4,790评论 0 2
  • 天空充斥着苍凉 铁链洞穿翅膀 麻木中 我不在渴望飞翔 今夜大风将长 呜咽如哭泣的梦想 角落里又有谁在悲伤 ……
    范范子诗阅读 1,683评论 0 0