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 相关文章推荐
javascript instanceof 内部机制探析
Oct 15 Javascript
js的touch事件的实际引用
Oct 13 Javascript
JavaScript判断变量是否为空的自定义函数分享
Jan 31 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
Aug 11 Javascript
jQuery地图map悬停显示省市代码分享
Aug 20 Javascript
javascript中new关键字详解
Dec 14 Javascript
Boostrap模态窗口的学习小结
Mar 28 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
Nov 07 Javascript
JavaScript解析机制与闭包原理实例详解
Mar 08 Javascript
vue+egg+jwt实现登录验证的示例代码
May 18 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
Sep 14 Javascript
jQuery实现消息弹出框效果
Dec 10 jQuery
使用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
将兴奋、喜悦和坎加斯带到戴安娜:亚马逊公主
2020/03/03 欧美动漫
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
php MsSql server时遇到的中文编码问题
2009/06/11 PHP
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
php中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
PHP的PSR规范中文版
2013/09/28 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
浅谈php和js中json的编码和解码
2016/10/24 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
2016/11/10 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
详解Python编程中time模块的使用
2015/11/20 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
办公室副主任岗位职责
2013/11/25 职场文书
往来会计岗位职责
2013/12/19 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
求职个人评价范文
2014/04/09 职场文书
施工单位安全责任书
2014/07/24 职场文书
授权收款委托书
2014/09/23 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书