溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

vue如何獲取data數(shù)據(jù)改變前后的值

發(fā)布時間:2021-05-11 11:37:27 來源:億速云 閱讀:188 作者:小新 欄目:web開發(fā)

這篇文章主要介紹了vue如何獲取data數(shù)據(jù)改變前后的值,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

vue是什么

Vue是一套用于構(gòu)建用戶界面的漸進式JavaScript框架,Vue與其它大型框架的區(qū)別是,使用Vue可以自底向上逐層應(yīng)用,其核心庫只關(guān)注視圖層,方便與第三方庫和項目整合,且使用Vue可以采用單文件組件和Vue生態(tài)系統(tǒng)支持的庫開發(fā)復(fù)雜的單頁應(yīng)用。

場景:購物車增加商品數(shù)量同時更新bridge標志上的總商品個數(shù),如果只是加上當前變化后的數(shù)量的話則之前原有的數(shù)量會被重新添加一遍造成計算錯誤。因此要減去變化前的數(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è)個定時器呢?

因為先改變參數(shù)然后才去觸發(fā)v-n指令如果不加定時器得到的數(shù)據(jù)是上上次更新的數(shù)據(jù)

對比兩種方法,明顯是watch比較方便但是自定義指令,也是個不錯的東西學習一下可能以后其他地方會用到

感謝你能夠認真閱讀完這篇文章,希望小編分享的“vue如何獲取data數(shù)據(jù)改變前后的值”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI