Vue的watch和computed方法的使用及区别介绍


Posted in Javascript onSeptember 06, 2018

Vue的watch属性

Vue的watch属性可以用来监听data属性中数据的变化

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <script src="lib/vue.min.js"></script>
    <script src="lib/vue-router-3.0.1.js"></script>
  </head>
  <body>
    <div id="app">
      <input type="text" v-model="firstname" />
    </div>
    <script type="text/javascript">
      var vm = new Vue({
        el:"#app",
        data:{
          firstname:"",
          lastname:""
        },
        methods:{},
        watch:{
          firstname:function(){
            console.log(this.firstname)
          }
        }
      })
    </script>
  </body>
</html>

可以从上述代码中实践得知,输入框内的值变化多少次,控制台就会打印多少次

同时还可以直接在监听的function中使用参数来获取新值与旧值

watch:{
          firstname:function(newValue,OldValue){
            console.log(newValue);
            console.log(OldValue);
          }
        }

其中第一个参数是新值,第二个参数是旧值

同时Watch还可以被用来监听路由router的变化,只是这里的监听的元素是固定的

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <script src="lib/vue.min.js"></script>
    <script src="lib/vue-router-3.0.1.js"></script>
    <style type="text/css">
    </style>
  </head>
  <body>
    
    <div id="app">
      <!--
        由于Vue-router的hash匹配原则所以我们需要在原定义的路径上加一个#号
      -->
<!--      <a href="#/login" rel="external nofollow" >登录</a>
      <a href="#/register" rel="external nofollow" >注册</a>-->
      <router-link to="/login" tag="span">登录</router-link>
      <router-link to="/register">注册</router-link>
      <router-view></router-view>
    </div>
  </body>
  <script>
    var login={
      template:'<h1>登录组件</h1>'
    }
    var register={
      template:'<h1>注册组件</h1>'
    }
    var routerObj = new VueRouter({
      routes:[
      //此处的component只能使用组件对象,而不能使用注册的模板的名称
        {path:"/login",component:login},
        {path:"/register",component:register}
      ]
    })
    var vm = new Vue({
      el:'#app',
      data:{
      },
      methods:{
        
      },
      router:routerObj,//将路由规则对象注册到VM实例上
      watch:{
        '$route.path':function(newValue,OldValue){
            console.log(newValue);
            console.log(OldValue);
        }
      }
    })
  </script>
</html>

计算属性Computed的作用

computed属性的作用与watch类似,也可以监听属性的变化

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <script src="lib/vue.min.js"></script>
    <script src="lib/vue-router-3.0.1.js"></script>
  </head>
  <body>
    <div id="app">
      <input type="text" v-model="firstname" />
      <input type="text" v-model="lastname" />
      <input type="text" v-model="fullname" />
    </div>
    <script type="text/javascript">
      var vm = new Vue({
        el:"#app",
        data:{
          firstname:"",
          lastname:""
        },
        methods:{},
/*       watch:{
          firstname:function(newValue,OldValue){
            console.log(newValue);
            console.log(OldValue);
          }
        }*/
        computed:{
          fullname:function(){
            return this.firstname +"-"+this.lastname
          }
        }
      })
    </script>
  </body>
</html>

只是他会根据他依赖的属性,生成一个属性,让vm对象可以使用这个属性

methods,watch,computed的区别

  1. computed 属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。主要当作属性来使用;
  2. methods 方法表示一个具体的操作,主要书写业务逻辑;
  3. watch 一个对象,键是需要观察的表达式,值是对应回调函数。主要用来监听某些特定数据的变化,从而进行某些具体的业务逻辑操作;可以看作是 computed 和 methods 的结合体;

总结

以上所述是小编给大家介绍的Vue的watch和computed方法的使用及区别介绍,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript的9个陷阱及评点分析
May 16 Javascript
JS俄罗斯方块,包含完整的设计理念
Dec 11 Javascript
script标签属性type与language使用选择
Dec 02 Javascript
表单元素与非表单元素刷新区别详细解析
Nov 06 Javascript
JS OffsetParent属性深入解析
Jan 13 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
May 26 Javascript
JS获取子窗口中返回的数据实现方法
May 28 Javascript
angular.js+node.js实现下载图片处理详解
Mar 31 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
Mar 05 Javascript
vue实现鼠标移入移出事件代码实例
Mar 27 Javascript
vue 使用鼠标滚动加载数据的例子
Oct 31 Javascript
vue 图片裁剪上传组件的实现
Nov 12 Javascript
Vue-component全局注册实例
Sep 06 #Javascript
Vue 监听列表item渲染事件方法
Sep 06 #Javascript
在Vue组件中获取全局的点击事件方法
Sep 06 #Javascript
jQuery实现基本动画效果的方法详解
Sep 06 #jQuery
JavaScript函数、闭包、原型、面向对象学习笔记
Sep 06 #Javascript
Vue中使用clipboard实现复制功能
Sep 05 #Javascript
vue-cli3.0配置及使用注意事项详解
Sep 05 #Javascript
You might like
laravel 4安装及入门图文教程
2014/10/29 PHP
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
javascript时间函数基础介绍
2013/03/28 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
javascript闭包的理解
2015/04/01 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
python中文分词教程之前向最大正向匹配算法详解
2017/11/02 Python
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
在Python IDLE 下调用anaconda中的库教程
2020/03/09 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
培训班开班仪式主持词
2014/03/28 职场文书
审计班子对照检查材料
2014/08/27 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
如何才能写好调研报告?
2019/07/03 职场文书
Go中的条件语句Switch示例详解
2021/08/23 Golang
2022年四月新番
2022/03/15 日漫
使用refresh_token实现无感刷新页面
2022/04/26 Javascript