vue 监听对象属性变化

今天看文章 遇到了这个问题,就用代码验证下,亲测有效。

<template>
  <div id="app">
      <span>
        {{ msg }}
      </span>
      <p>{{ person.name}}年龄是{{ person.age }}岁</p>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
    return{
      msg:'初始化值',
      person:{
          name:'李大侠',
          age:30
      }
    }
  },
  created(){
    this.changeAge();
  },
  methods: {
    changeAge(){
      setInterval(() => {
        this.person.age++
         this.msg='初始化值'+new Date().toString()
      }, 1000);
    }
  },
  watch:{
    person:function(){
      console.log('对象发生变化----------------------------')
    }
  }
}
</script>

此时的结果是模板内容虽然发生了变化,但是监控的person对象并没有输出,原因就是只改变了属性值。
下面就说一下监控属性值变化的方法
方法一:
直接监控对象属性

 watch:{
    'person.age':function(){
        console.log('年龄发生变化')
    }
  }`

方法二:
利用计算属性达到目的

<template>
  <div id="app">
      <span>
        {{ msg }}
      </span>
      <p>{{ person.name}}年龄是{{ ageChange }}岁</p>
  </div>
</template>

此处省略。。。
computed:{
    ageChange:function(){
      return this.person.age  
       //当age 发生变化的时候,就会重新计算,任何使用watch进行监控
    }
  },
watch:{
    ageChange:function(){
      console.log('年龄发生变化============')
    }
  }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值