VUE数据监听watch计算属性computed

思考业务场景:

 

1. 类似淘宝,当我输入某个人名字时,我想触发某个效果

2. 利用vue做一个简单的计算器

概述

watch监听单个,computed监听多个

当watch监听的是复杂数据类型(数组,对象)的时候需要做深度监听(写法如下)

watch:{

            msg:{

               …

              },

              deep:true//开启深度监听

            }

          }

computed  监视对象,写在了函数内部,  凡是函数内部有this.相关属性,改变都会触发当前函数

简单监听代码

<!DOCTYPE html>

<html>

<head>

    <title></title>

</head>

<body>

    <div id="app">

       <div>watch监听数据</div>

       <input type="text" name="" v-model='msg'>



    </div>





    <script type="text/javascript" src="vue.js"></script>

    <script type="text/javascript">

      

       new Vue({

           el:'#app',

           data(){

              return {

                  msg:''

              }

           },

           watch:{

                  msg(newval,oldval){

                  if(newval=='love'){

                     alert(newval)

                  }

              }



           }

       })

    </script>

</body>

</html>

 

代码

<!DOCTYPE html>

<html>

<head>

    <title></title>

</head>

<body>

    <div id="app">

       <div>watch监听数据</div>

       <input type="text" name="" v-model='msg.text'>

       <div>computed计算属性</div>

       (<input type="text" name="" v-model='n1'>+

       <input type="text" name="" v-model='n2'>)*

       <input type="text" name="" v-model='n3'>={{result}}

    </div>





    <script type="text/javascript" src="vue.js"></script>

    <script type="text/javascript">

      

       new Vue({

           el:'#app',

           data(){

              return {

                  msg:{text:''},

                  n1:'',

                  n2:'',

                  n3:'1'

              }

           },

           computed:{

              result(){

                  return (Number(this.n1)+Number(this.n2))*Number(this.n3)

              }

           },

           watch:{

              msg:{

                  handler(newval,oldval){

                     if(newval.text=='love'){

                         alert(newval.text)

                     }

                  },

                  deep:true

              }

           }

       })

    </script>

</body>

</html>

运行效果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值