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学习笔记(五) Array 数组类型介绍
Jun 19 Javascript
dotopAlert 提示用户需安装播放器的代码
Sep 17 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
Nov 12 Javascript
jquery实现增加删除行的方法
Feb 03 Javascript
JavaScript中使用数组方法汇总
Feb 16 Javascript
JS实现简易刻度时钟示例代码
Mar 11 Javascript
ES6新特性之变量和字符串用法示例
Apr 01 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
Jul 13 Javascript
vue router 配置路由的方法
Jul 26 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
Sep 14 Javascript
JS实现音乐导航特效
Jan 06 Javascript
Vue自动构建发布脚本的方法示例
Jul 24 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的单引号和双引号 字符串效率
2009/05/27 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
Aptana调试javascript图解教程
2009/11/30 Javascript
Dojo 学习要点
2010/09/03 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
setInterval计时器不准的问题解决方法
2014/05/08 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
使用apifm-wxapi快速开发小程序过程详解
2019/08/05 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
python中元类用法实例
2014/10/10 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
CSS3改变浏览器滚动条样式
2019/01/04 HTML / CSS
应届生高等护理求职信
2013/10/12 职场文书
syb养殖创业计划书
2014/01/09 职场文书
高中数学教学反思
2014/01/30 职场文书
预备党员政审材料
2014/02/04 职场文书
入党介绍人评语
2014/05/06 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
幼儿园语言教学反思
2016/02/23 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
MySQL5.7并行复制原理及实现
2021/06/03 MySQL
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python