vue獲取data數(shù)據(jù)改變前后的值方法
場景:購物車增加商品數(shù)量同時更新bridge標(biāo)志上的總商品個數(shù),如果只是加上當(dāng)前變化后的數(shù)量的話則之前原有的數(shù)量會被重新添加一遍造成計(jì)算錯誤。因此要減去變化前的數(shù)量才能得到添加的數(shù)量。
方法一: 直接watch監(jiān)聽data的數(shù)據(jù)
watch: {
a (now,old) {
console.log(now,old)
}
}
old為舊的值now為更新后的值
方法二:自定義指令
通過自定義指令將更新前的值綁定到對應(yīng)自定義指令的元素的dataset上然后在vue文件里面通過ref獲取到元素來獲取舊的值
自定義指令就不多說了前面有寫過以前相關(guān)的博客了這里直接上代碼
自定義指令要新建一個js文件并引入vue源碼包
import Vue from 'vue'
/*自定義指令*/
/*el所綁定的對象,binding指令上的參數(shù)*/
Vue.directive('n',{
/*插入數(shù)據(jù)時觸發(fā)*/
inserted: function (el,binding) {
console.log('插入',binding,el)
el.innerHTML = binding.value
},
update: function (el,binding) {
console.log('更新參數(shù)',binding)
el.dataset.oldNum = binding.oldValue
el.innerHTML = binding.value
},
bind:function (el,binding) {
console.log('綁定參數(shù)',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是為了更新數(shù)據(jù)的操作,其中為什么要設(shè)個定時器呢?
因?yàn)橄雀淖儏?shù)然后才去觸發(fā)v-n指令如果不加定時器得到的數(shù)據(jù)是上上次更新的數(shù)據(jù)
對比兩種方法,明顯是watch比較方便但是自定義指令,也是個不錯的東西學(xué)習(xí)一下可能以后其他地方會用到
以上這篇vue獲取data數(shù)據(jù)改變前后的值方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue如何修改data中的obj數(shù)據(jù)的屬性
這篇文章主要介紹了vue如何修改data中的obj數(shù)據(jù)的屬性,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
vue中子組件向父組件傳遞數(shù)據(jù)的實(shí)例代碼(實(shí)現(xiàn)加減功能)
這篇文章主要介紹了vue中子組件向父組件傳遞數(shù)據(jù)的實(shí)例代碼(實(shí)現(xiàn)加減功能) ,需要的朋友可以參考下2018-04-04
從零開始用webpack構(gòu)建一個vue3.0項(xiàng)目工程的實(shí)現(xiàn)
這篇文章主要介紹了從零開始用webpack構(gòu)建一個vue3.0項(xiàng)目工程的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
詳解如何使用webpack在vue項(xiàng)目中寫jsx語法
本篇文章主要介紹了詳解如何使用webpack在vue項(xiàng)目中寫jsx語法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
vue3?+?Ant?Design?實(shí)現(xiàn)雙表頭表格的效果(橫向表頭+縱向表頭)
這篇文章主要介紹了vue3?+?Ant?Design?實(shí)現(xiàn)雙表頭表格(橫向表頭+縱向表頭),需要的朋友可以參考下2023-12-12
vue本地打開build后生成的dist文件夾index.html問題
這篇文章主要介紹了vue本地打開build后生成的dist文件夾index.html問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧2019-09-09

