vue获取data数据改变前后的值方法


Posted in Javascript onNovember 07, 2019

场景:购物车增加商品数量同时更新bridge标志上的总商品个数,如果只是加上当前变化后的数量的话则之前原有的数量会被重新添加一遍造成计算错误。因此要减去变化前的数量才能得到添加的数量。

方法一: 直接watch监听data的数据

watch: {
a (now,old) {
console.log(now,old)
}
}

old为旧的值now为更新后的值

方法二:自定义指令

通过自定义指令将更新前的值绑定到对应自定义指令的元素的dataset上然后在vue文件里面通过ref获取到元素来获取旧的值

自定义指令就不多说了前面有写过以前相关的博客了这里直接上代码

自定义指令要新建一个js文件并引入vue源码包

import Vue from 'vue'
/*自定义指令*/
/*el所绑定的对象,binding指令上的参数*/
Vue.directive('n',{
  /*插入数据时触发*/
  inserted: function (el,binding) {
    console.log('插入',binding,el)
    el.innerHTML = binding.value
  },
  update: function (el,binding) {
    console.log('更新参数',binding)
    el.dataset.oldNum = binding.oldValue
    el.innerHTML = binding.value
  },
  bind:function (el,binding) {
    console.log('绑定参数',binding)
    el.innerHTML = binding.value
  }
})

.vue文件中使用

import n from '../assets/n'
<div ref="div" v-n="a"></div>
<button @click="inc">增加</button>
inc () {
  this.a++
  var that = this
  setTimeout(function () {
    console.log(that.$refs.div.dataset.oldNum)
  },1)
}

这里的inc是为了更新数据的操作,其中为什么要设个定时器呢?

因为先改变参数然后才去触发v-n指令如果不加定时器得到的数据是上上次更新的数据

对比两种方法,明显是watch比较方便但是自定义指令,也是个不错的东西学习一下可能以后其他地方会用到

以上这篇vue获取data数据改变前后的值方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype Date对象 学习
Jul 12 Javascript
最佳JS代码编写的14条技巧
Jan 09 Javascript
JavaScript实现简单的时钟实例代码
Nov 23 Javascript
在每个匹配元素的外部插入新元素的方法
Dec 20 Javascript
jquery绑定事件不生效的解决方法
Feb 11 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
Oct 09 Javascript
浅析angularJS中的ui-router和ng-grid模块
May 20 Javascript
JS之获取样式的简单实现方法(推荐)
Sep 13 Javascript
JS生成和下载二维码的代码
Dec 07 Javascript
JavaScript实现前端实时搜索功能
Mar 26 Javascript
JavaScript编写的网页小游戏,很给力
Aug 18 Javascript
JavaScript对象访问器Getter及Setter原理解析
Dec 08 Javascript
使用JS监听键盘按下事件(keydown event)
Nov 07 #Javascript
vue.js循环radio的实例
Nov 07 #Javascript
vue 解决遍历对象显示的顺序不对问题
Nov 07 #Javascript
vue遍历对象中的数组取值示例
Nov 07 #Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
Nov 07 #Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
Nov 07 #Javascript
vue 实现v-for循环回来的数据动态绑定id
Nov 07 #Javascript
You might like
PHP读写文件的方法(生成HTML)
2006/11/27 PHP
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
node Buffer缓存区常见操作示例
2019/05/04 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
python自定义解析简单xml格式文件的方法
2015/05/11 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
详解Python装饰器
2019/03/25 Python
Django执行源生mysql语句实现过程解析
2020/11/12 Python
编程实现去掉XML的重复结点
2014/05/28 面试题
架构师岗位职责
2013/11/18 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
幼儿园评语大全
2014/04/17 职场文书
心术观后感
2015/06/11 职场文书
城南旧事电影观后感
2015/06/16 职场文书
小学体育教学随笔
2015/08/14 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL