深入对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 相关文章推荐
转一个日期输入控件,支持FF
Apr 27 Javascript
javaScript 动态访问JSon元素示例代码
Aug 30 Javascript
JS保留两位小数 四舍五入函数的小例子
Nov 20 Javascript
Javascript:为input设置readOnly属性(示例讲解)
Dec 25 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
May 06 Javascript
Jquery使用val方法读写value值
May 18 Javascript
jquery选择器简述
Aug 31 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
Mar 29 Javascript
JS中cookie的使用及缺点讲解
May 13 Javascript
详解webpack打包后如何调试的方法步骤
Nov 07 Javascript
javascript导出csv文件(excel)的方法示例
Aug 25 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
Apr 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
自动跳转中英文页面
2006/10/09 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
PHP序列化操作方法分析
2016/09/28 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
JS location几个方法小姐
2008/07/09 Javascript
javascript replace()正则替换实现代码
2010/02/26 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
基于AngularJS实现的工资计算器实例
2017/06/16 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
JS常用排序方法实例代码解析
2020/03/03 Javascript
小程序实现简单语音聊天的示例代码
2020/07/24 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
[01:04:06]DOTA2上海特级锦标赛A组资格赛#2 Secret VS EHOME第一局
2016/02/26 DOTA
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
2014年民主评议党员个人总结
2014/09/24 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
军训个人总结
2015/03/03 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
新闻稿格式范文
2015/07/18 职场文书
毕业班工作总结
2015/08/10 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python
redis实现的四种常见限流策略
2021/06/18 Redis