深入对Vue.js $watch方法的理解


Posted in Javascript onMarch 20, 2017

博主最近对着vue.js的官方教程在自学vue.js,博主自幼愚钝,在教程中真的是好多点都不太理解,接下来要说的这个$watch方法就是其中一个不太理解的点了。咱们先来看一下对于$watch方法在vue.js的API中是怎么解释的吧:观察 Vue 实例变化的一个表达式或计算属性函数。回调函数得到的参数为新值和旧值。表达式只接受监督的键路径。对于更复杂的表达式,用一个函数取代。官方示例:

// 键路径
vm.$watch('a.b.c', function (newVal, oldVal) {
 // 做点什么
})
// 函数
vm.$watch(
 function () {
  return this.a + this.b
 },
 function (newVal, oldVal) {
  // 做点什么
 }
)

vm.$watch 返回一个取消观察函数,用来停止触发回调:

var unwatch = vm.$watch('a', cb)
// 之后取消观察
unwatch()

博主很认真地看了看,当时就懵逼了,没看懂。还好网上大神多,查了查终于搞明白这个$watch方法的用法了。说白了$watch这货就是观察一个值的变化,观察的这个值一变化的话,那么就执行function里面的语句。废话不多说,咱们直接看代码:

HTML:

<div id="watch">
    firstName:<input type="text" name="li" v-model="firstName">
    <br>
    lastName:<input type="text" name="fei" v-model="lastName">
    <p>fullName: {{fullName}}</p>
</div>

JS:

var vm = new Vue({
      el: '#watch',
      data: {
        firstName: 'a',
        lastName: 'fei',
        fullName: 'a fei'
      },
      watch: {
        firstName: function (val) {
          this.fullName = val + ' ' + this.lastName
        },
        lastName: function (val) {
          this.fullName = this.firstName + ' ' + val
        }
      }
})

在代码中,我们用wach方法监听了firstName和lastName这两个变量,我们在input框框那里做了双绑定,这样子的话,我们在firstName输入框中输入的值就会改变变量firstName的值,同理可得lastName,因为值的改变和watch这货的观察,所以watch里面的function代码就会运行,这样子fullName也就会相应地改变了。这样子$watch这方法的用法也就一下子明了了。上述的例子中$watch就和原生js里面的on-change差不多了。

以上就是博主对$watch方法的理解了,希望可以帮助大家理解这一方法,要是上述有何不对的地方,麻烦各位看官多多指出,谢谢大家。

Javascript 相关文章推荐
理解Javascript_01_理解内存分配原理分析
Oct 11 Javascript
前端开发过程中浏览器版本的两种判定方法
Oct 30 Javascript
jQuery中的pushStack实现原理和应用实例
Feb 03 Javascript
js焦点文字滚动效果代码分享
Aug 25 Javascript
jquery实现平滑的二级下拉菜单效果
Aug 26 Javascript
JavaScript中的各种操作符使用总结
May 26 Javascript
AngularJS表格添加序号的方法
Mar 03 Javascript
BootStrap 导航条实例代码
May 18 Javascript
vue2.0 中使用transition实现动画效果使用心得
Aug 13 Javascript
Vue源码解析之数组变异的实现
Dec 04 Javascript
jquery的$().each和$.each的区别
Jan 18 jQuery
阿望教你用vue写扫雷小游戏
Jan 20 Javascript
jQuery is not defined 错误原因与解决方法小结
Mar 19 #Javascript
js获取当前周、上一周、下一周日期
Mar 19 #Javascript
浅析bootstrap原理及优缺点
Mar 19 #Javascript
jQuery中用on绑定事件时需注意的事项
Mar 19 #Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
Mar 19 #Javascript
JavaScript数据结构之链表的实现
Mar 19 #Javascript
用jQuery实现圆点图片轮播效果
Mar 19 #Javascript
You might like
自动分页的不完整解决方案
2007/01/12 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
PHP获取MAC地址的具体实例
2013/12/13 PHP
分享10段PHP常用代码
2015/11/11 PHP
PhpStorm配置Xdebug调试的方法步骤
2019/02/02 PHP
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
基于jQuery的图片剪切插件
2011/08/03 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
详解Vue快速零配置的打包工具——parcel
2018/01/16 Javascript
基于Node.js实现压缩和解压缩的方法
2018/02/13 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
利用Python实现Windows定时关机功能
2017/03/21 Python
python批量创建指定名称的文件夹
2019/03/21 Python
python 函数中的参数类型
2020/02/11 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
大学生怎样写好自荐信
2014/02/25 职场文书
我爱我家教学反思
2014/05/01 职场文书
酒店节能降耗方案
2014/05/08 职场文书
资产运营委托书范本
2014/10/16 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
婚宴邀请函
2015/01/30 职场文书
小学端午节活动总结
2015/02/11 职场文书
十月围城观后感
2015/06/08 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript