(5)Vue-监视属性watch

1.监视属性

监视属性watch
1.当监视属性变化时,回调函数自动调用,进行相关操作
2.监视的属性必须存在,才能监视
3.监视的两种写法
    new Vue({})的时候传入watch
    通过vm.$watch监视
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>


<div id="demo">
  <h1>今天天气{{show}}</h1>
  <button @click="changeWeather">点我</button>
</div>
<script type="text/javascript">
  const vm = new Vue({
    el:'#demo',
    data:{
      name:true
    },
    computed:{
      show(){
        return this.name ? '热' : '冷'
      }
    },
    methods:{
      changeWeather(){
        this.name = !this.name
      }
    },
      // watch:{
      //   name:{
      //       handler(newValue,oldValue){
      //           console.log(newValue,oldValue)
      //       }
      //   }
      // }
  })
  vm.$watch('name',{
      handler(newValue,oldValue){
                    console.log(newValue,oldValue)
                }
  })

  //简写
  // vm.$watch('name',function (newValue,oldValue){
  //     console.log(newValue,oldValue)
  //
  // }
  // )
</script>

</body>
</html>

2.监视属性简写

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>

<div id="demo">
  <h1>{{name}}</h1>
    <button @click="changeWeather">点我</button>
</div>
<script type="text/javascript">
  const vm = new Vue({
    el:'#demo',
    data:{
      name:true,
      num:{
          a:1,
          b:2
      }
    },methods:{
          changeWeather(){
              this.name = !this.name
          }
      },
      watch:{
          name(newValue,oldValue){
              console.log(newValue,oldValue)
          }
        }

  })

</script>

</body>
</html>

3.深度监视

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>

<div id="demo">
  <h1>{{num.a}}</h1>
    <button @click="num.a++">点我</button>
</div>
<script type="text/javascript">
  const vm = new Vue({
    el:'#demo',
    data:{
      name:true,
      num:{
          a:1,
          b:2
      }
    },
      watch:{
        'num':{
            //watch可以检测num里的变化
            deep:true,
            handler(){
                console.log('num变化了')
            }
        }
      }
  })

</script>

</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值