深入对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 相关文章推荐
jQuery 行级解析读取XML文件(附源码)
Oct 12 Javascript
window resize和scroll事件的基本优化思路
Apr 29 Javascript
JQuery设置时间段下拉选择实例
Dec 30 Javascript
jQuery中Form相关知识汇总
Jan 06 Javascript
JavaScript实现的简单幂函数实例
Apr 17 Javascript
javascript多行字符串的简单实现方式
May 04 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
Dec 30 Javascript
jquery自定义显示消息数量
Dec 19 jQuery
微信小程序多音频播放进度条问题
Aug 28 Javascript
vue中使用codemirror的实例详解
Nov 01 Javascript
VuePress 快速踩坑小结
Feb 14 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
Oct 12 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
Terran兵种对照表
2020/03/14 星际争霸
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
input 输入框内的输入事件详细分析
2010/03/17 Javascript
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
AngularJs Managing Service Dependencies详解
2016/09/02 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
原生js仿浏览器滚动条效果
2017/03/02 Javascript
B/S(Web)实时通讯解决方案分享
2017/04/06 Javascript
基于node.js制作简单爬虫教程
2017/06/29 Javascript
JS实现图片切换效果
2018/11/17 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
Python设计模式之命令模式简单示例
2018/01/10 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
基于python log取对数详解
2018/06/08 Python
利用Python读取txt文档的方法讲解
2018/06/23 Python
Python基于百度云文字识别API
2018/12/13 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
Python中实现输入一个整数的案例
2020/05/03 Python
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
女大学生毕业找工作的自我评价
2013/10/03 职场文书
影视艺术学院毕业生自荐信
2013/11/13 职场文书
地质灾害防治方案
2014/05/14 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
2015年防汛工作总结
2015/05/15 职场文书
springboot读取resources下文件的方式详解
2022/06/21 Java/Android