深入对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 使用手册(五)
Sep 23 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
Jun 22 Javascript
js控制的回到页面顶端goTop的代码实现
Mar 20 Javascript
JQuery中form验证出错信息的查看方法
Oct 08 Javascript
Javascript检查图片大小不要让大图片撑破页面
Nov 04 Javascript
JS实现窗口加载时模拟鼠标移动的方法
Jun 03 Javascript
jQuery实现下滑菜单导航效果代码
Aug 25 Javascript
jQuery简单实现tab选项卡切换效果
Jun 20 Javascript
Angular的$http与$location
Dec 26 Javascript
Bootstrap导航条学习使用(一)
Feb 08 Javascript
jQuery选择器之层次选择器用法实例分析
Feb 19 jQuery
toString.call()通用的判断数据类型方法示例
Aug 28 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
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
php实现网站顶踩功能的完整前端代码
2015/07/19 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
2018/10/25 PHP
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
javascript限制文本框只允许输入数字(曾经与现在的方法对比)
2013/01/18 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
jQuery获取动态生成的元素示例
2014/06/15 Javascript
js获取字符串字节数方法小结
2015/06/09 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
2018/08/25 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
js实现省级联动(数据结构优化)
2020/07/17 Javascript
Python中用altzone()方法处理时区的教程
2015/05/22 Python
python中__slots__用法实例
2015/06/04 Python
Python序列操作之进阶篇
2016/12/08 Python
python实现Flappy Bird源码
2018/12/24 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
Python Sphinx使用实例及问题解决
2020/01/17 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
python复合条件下的字典排序
2020/12/18 Python
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
德国购买门票网站:ADticket.de
2019/10/31 全球购物
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
指针和引用有什么区别
2013/01/13 面试题
结婚喜宴家长答谢词
2014/01/15 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
回复函格式及范文
2015/07/14 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python
OpenCV-Python实现轮廓拟合
2021/06/08 Python
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL