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 this调用规则说明
Mar 08 Javascript
JavaScript下利用fso判断文件是否存在的代码
Dec 11 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
Oct 08 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
May 19 Javascript
jQuery 3.0十大新特性最终版发布
Jul 14 Javascript
Angularjs按需查询实例代码
Oct 30 Javascript
深入理解js 中async 函数的含义和用法
May 13 Javascript
vue打包使用Nginx代理解决跨域问题
Aug 27 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
Sep 06 Javascript
Vue实现随机验证码功能
Dec 29 Vue.js
vue3中的组件间通信
Mar 31 Vue.js
JavaScript阻止事件冒泡的方法
Dec 06 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 反向排序和随机排序代码
2010/06/30 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
Javascript 继承实现例子
2009/08/12 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
文档对象模型DOM通俗讲解
2013/11/01 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
2019/03/07 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
在Mac OS上搭建Python的开发环境
2015/12/24 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
django数据库自动重连的方法实例
2019/07/21 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
基于OpenCV的路面质量检测的实现
2020/11/04 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
国际奢侈品品牌童装购物网站:Designer Childrenswear
2019/05/08 全球购物
常务副总经理任命书
2014/06/05 职场文书
社区国庆节活动总结
2015/03/23 职场文书
复活读书笔记
2015/06/29 职场文书
日本十大血腥动漫,那些被禁播的动漫盘点
2022/03/21 日漫