深入对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 一段左右两边随屏滚动的代码
Jun 18 Javascript
js获取本机的外网/广域网ip地址完整源码
Aug 12 Javascript
js控制input输入字符解析
Dec 27 Javascript
jQuery中clone()方法用法实例
Jan 16 Javascript
webpack处理 css\less\sass 样式的方法
Aug 21 Javascript
简单两步使用node发送qq邮件的方法
Mar 01 Javascript
微信小程序保存多张图片的实现方法
Mar 05 Javascript
js中数组常用方法总结(推荐)
Apr 09 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
Aug 11 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
Nov 14 Javascript
原生js滑动轮播封装
Jul 31 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
Aug 18 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笔记之:日期函数的使用介绍
2013/04/24 PHP
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
js压缩利器
2007/02/20 Javascript
javascript EXCEL 操作类代码
2009/07/30 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
Vue使用NProgress的操作过程解析
2019/10/10 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
详解Python 解压缩文件
2019/04/09 Python
python实现名片管理系统项目
2019/04/26 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
python可以用哪些数据库
2020/06/22 Python
Python接收手机短信的代码整理
2020/08/02 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
售后服务经理岗位职责范本
2014/02/22 职场文书
2014年会策划方案
2014/05/11 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
JavaScript实现两个数组的交集
2022/03/25 Javascript