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编写推箱子游戏
Jul 07 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
Sep 08 Javascript
javascript中的try catch异常捕获机制用法分析
Dec 14 Javascript
JS switch判断 三目运算 while 及 属性操作代码
Sep 03 Javascript
写给小白看的JavaScript异步
Nov 29 Javascript
VUE重点问题总结
Mar 19 Javascript
vue通过点击事件读取音频文件的方法
May 30 Javascript
vue初始化动画加载的实例
Sep 01 Javascript
JavaScript数组特性与实践应用深入详解
Dec 30 Javascript
vue中使用props传值的方法
May 08 Javascript
在layui tab控件中载入外部html页面的方法
Sep 04 Javascript
AudioContext 实现音频可视化(web技术分享)
Feb 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
linux下 C语言对 php 扩展
2008/12/14 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
jquery实现简单实用的弹出层效果代码
2015/10/15 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
基于WebUploader的文件上传js插件
2016/08/19 Javascript
ES6学习教程之Map的常用方法总结
2017/08/03 Javascript
vue 兄弟组件的信息传递的方法实例详解
2019/08/30 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
Python中用于计算对数的log()方法
2015/05/15 Python
Python利用Beautiful Soup模块修改内容方法示例
2017/03/27 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
python实现无边框进度条的实例代码
2020/12/30 Python
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
预备党员的自我评价
2014/03/12 职场文书
保密工作目标责任书
2014/07/28 职场文书
迎国庆演讲稿
2014/09/15 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
2019邀请函格式及范文
2019/05/20 职场文书
PHP实现两种排课方式
2021/06/26 PHP
php解析非标准json、非规范json的方式实例
2022/05/10 PHP