深入对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 相关文章推荐
JS删除数组元素的函数介绍
Mar 27 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
Jan 11 Javascript
Windows 系统下安装和部署Egret的开发环境
Jul 31 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
Aug 30 Javascript
使用JavaScript获取地址栏参数的方法
Dec 19 Javascript
AngularJs bootstrap详解及示例代码
Sep 01 Javascript
浅谈Angular4实现热加载开发旅程
Sep 08 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
Nov 09 jQuery
代码详解JS操作剪贴板
Feb 11 Javascript
vue:el-input输入时限制输入的类型操作
Aug 05 Javascript
vue3为什么要用proxy替代defineProperty
Oct 19 Javascript
绘制微信小程序验证码功能的实例代码
Jan 05 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
用mysql内存表来代替php session的类
2009/02/01 PHP
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
有关PHP性能优化的介绍
2013/06/20 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
PHP Cookie学习笔记
2016/08/23 PHP
php使用高斯算法实现图片的模糊处理功能示例
2016/11/11 PHP
php自定义函数实现统计中文字符串长度的方法小结
2017/04/15 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
prototype 的说明 js类
2006/09/07 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
javascript获取四位数字或者字母的随机数
2015/01/09 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
jQuery跨域问题解决方案
2015/08/03 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
Bootstrap CSS组件之按钮下拉菜单
2016/12/17 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
2019/10/11 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
2020/03/26 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
python中日期和时间格式化输出的方法小结
2015/03/19 Python
Python post请求实现代码实例
2020/02/28 Python
python算的上脚本语言吗
2020/06/22 Python
Python获取excel内容及相关操作代码实例
2020/08/10 Python
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
手把手教你实现一个canvas智绘画板的方法
2019/03/04 HTML / CSS
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
运动会解说词100字
2014/01/31 职场文书
党校学习自我鉴定
2014/02/24 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书