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 相关文章推荐
window.showModalDialog使用手册
Jan 11 Javascript
js自执行函数的几种不同写法的比较
Aug 16 Javascript
JS获取select-option-text_value的方法
Dec 26 Javascript
javascript跨浏览器的属性判断方法
Mar 16 Javascript
浅谈Javascript变量作用域问题
Dec 16 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
Sep 06 Javascript
vue.js实现单选框、复选框和下拉框示例
Jul 18 Javascript
vue实现导航栏效果(选中状态刷新不消失)
Dec 13 Javascript
Vue单页应用引用单独的样式文件的两种方式
Mar 30 Javascript
如何为vuex实现带参数的 getter和state.commit
Jan 04 Javascript
vue数据响应式原理知识点总结
Feb 16 Javascript
js实现贪吃蛇游戏 canvas绘制地图
Sep 09 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
escape unescape的php下的实现方法
2007/04/27 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
Python最基本的输入输出详解
2015/04/25 Python
python调用fortran模块
2016/04/08 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
Python之文字转图片方法
2018/05/10 Python
python实现词法分析器
2019/01/31 Python
python 计算一个字符串中所有数字的和实例
2019/06/11 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
使用Python pip怎么升级pip
2020/08/11 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
什么是跨站脚本攻击
2014/12/11 面试题
无毒社区工作方案
2014/05/23 职场文书
组工干部对照检查材料
2014/08/25 职场文书
办公室文员工作自我鉴定
2014/09/19 职场文书
写给导师的自荐信
2015/03/06 职场文书
民间借贷被告代理词
2015/05/23 职场文书
使用CSS连接数据库的方式
2022/02/28 HTML / CSS