深入对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 相关文章推荐
Pro JavaScript Techniques学习笔记
Dec 28 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
Jan 11 Javascript
javascript中万恶的function实例分析
May 25 Javascript
js监听输入框值的即时变化onpropertychange、oninput
Jul 13 Javascript
jquery操作cookie插件分享
Jan 14 Javascript
javascript搜索框效果实现方法
May 14 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
Mar 02 Javascript
JS修改地址栏参数实例代码
Jun 14 Javascript
web前端开发upload上传头像js示例代码
Oct 22 Javascript
jquery滚动条插件slimScroll使用方法
Feb 09 Javascript
React BootStrap用户体验框架快速上手
Mar 06 Javascript
node.js使用stream模块实现自定义流示例
Feb 13 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
什么是短波收听SWL
2021/03/01 无线电
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
PHP中的静态变量及static静态变量使用详解
2015/11/05 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
jquery垂直公告滚动实现代码
2013/12/08 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
在django模板中实现超链接配置
2019/08/21 Python
Python 如何提高元组的可读性
2019/08/26 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
python求绝对值的三种方法小结
2019/12/04 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
迷你分体式空调:SoGoodToBuy
2018/08/07 全球购物
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
20岁生日感言
2014/01/13 职场文书
美术教师自我鉴定
2014/02/12 职场文书
酒店管理毕业生自我鉴定
2014/03/02 职场文书
作文批改评语
2014/12/25 职场文书
幼儿园母亲节活动总结
2015/02/10 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python