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最新版(1.5 rc2)使用指南(1)
Jan 10 Javascript
利用onresize使得div可以随着屏幕大小而自适应的代码
Jan 15 Javascript
js获得地址栏?问号后参数的方法
Aug 08 Javascript
Javascript实现简单二级下拉菜单实例
Jun 15 Javascript
javascript中Date()函数在各浏览器中的显示效果
Jun 18 Javascript
AngularJS 入门教程之HTML DOM实例详解
Jul 28 Javascript
概述一个页面从输入URL到页面加载完的过程
Dec 16 Javascript
js实现定时进度条完成后切换图片
Jan 04 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
Aug 22 Javascript
深入浅出理解JavaScript闭包的功能与用法
Aug 01 Javascript
Angular ElementRef简介及其使用
Oct 01 Javascript
Vue.js如何使用Socket.IO的示例代码
Sep 05 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
用Flash图形化数据(二)
2006/10/09 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
Laravel中间件实现原理详解
2016/10/09 PHP
javascript instanceof,typeof的区别
2010/03/24 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
2016/08/16 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
详解JS实现简单的时分秒倒计时代码
2019/04/25 Javascript
小程序关于请求同步的总结
2019/05/05 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
js实现幻灯片轮播图
2020/08/14 Javascript
Vue+Java+Base64实现条码解析的示例
2020/09/23 Javascript
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
Python Paramiko模块的安装与使用详解
2016/11/18 Python
Python字符串格式化的方法(两种)
2017/09/19 Python
python线程池threadpool实现篇
2018/04/27 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
致800米运动员广播稿
2014/02/16 职场文书
2014年创卫实施方案
2014/02/18 职场文书
《小池塘》教学反思
2014/02/28 职场文书
大学生学期自我鉴定
2014/03/19 职场文书
四下基层实施方案
2014/03/28 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
2016党校培训心得体会
2016/01/07 职场文书
八年级物理教学反思
2016/02/19 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
React如何创建组件
2021/06/27 Javascript
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android