深入对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 事件流和事件绑定
Jul 16 Javascript
JavaScript Memoization 让函数也有记忆功能
Oct 27 Javascript
Jquery显示、隐藏元素以及添加删除样式
Aug 09 Javascript
js实现的牛顿摆效果
Mar 31 Javascript
使用javaScript动态加载Js文件和Css文件
Oct 24 Javascript
jQuery Validate表单验证入门学习
Dec 18 Javascript
javascript汉字拼音互转的简单实例
Oct 09 Javascript
video.js使用改变ui过程
Mar 05 Javascript
Javascript中字符串相关常用的使用方法总结
Mar 13 Javascript
微信网页授权并获取用户信息的方法
Jul 30 Javascript
vue form check 表单验证的实现代码
Dec 09 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
Nov 16 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 COOKIE设置为浏览器进程
2009/06/21 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
javascript中xml操作实现代码
2011/11/21 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
浅谈$('div a') 与$('div&gt;a')的区别
2016/07/18 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
vue.js 实现点击展开收起动画效果
2018/07/07 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
python thread 并发且顺序运行示例
2009/04/09 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
Python中使用logging和traceback模块记录日志和跟踪异常
2019/04/09 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
C++是不是类型安全的
2014/02/18 面试题
优秀老员工获奖感言
2014/02/15 职场文书
工厂车间标语
2014/06/19 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
大专护理专业自荐信
2015/03/25 职场文书
导游词之青岛太清宫
2019/12/13 职场文书