vue獲取data數(shù)據(jù)改變前后的值方法
場景:購物車增加商品數(shù)量同時更新bridge標志上的總商品個數(shù),如果只是加上當前變化后的數(shù)量的話則之前原有的數(shù)量會被重新添加一遍造成計算錯誤。因此要減去變化前的數(shù)量才能得到添加的數(shù)量。
方法一: 直接watch監(jiān)聽data的數(shù)據(jù)
watch: { a (now,old) { console.log(now,old) } }
old為舊的值now為更新后的值
方法二:自定義指令
通過自定義指令將更新前的值綁定到對應自定義指令的元素的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è)個定時器呢?
因為先改變參數(shù)然后才去觸發(fā)v-n指令如果不加定時器得到的數(shù)據(jù)是上上次更新的數(shù)據(jù)
對比兩種方法,明顯是watch比較方便但是自定義指令,也是個不錯的東西學習一下可能以后其他地方會用到
以上這篇vue獲取data數(shù)據(jù)改變前后的值方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue輸入框狀態(tài)切換&自動獲取輸入框焦點的實現(xiàn)方法
這篇文章主要介紹了Vue輸入框狀態(tài)切換&自動獲取輸入框焦點的實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05element?el-tooltip實現(xiàn)自定義修改樣式
本文主要介紹了element?el-tooltip實現(xiàn)自定義修改樣式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07一鍵將Word文檔轉(zhuǎn)成Vue組件mammoth的應用詳解
這篇文章主要為大家介紹了一鍵將Word文檔轉(zhuǎn)成Vue組件mammoth的應用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02