最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年11月07日 11:03:16   作者:養(yǎng)只貓  
今天小編就為大家分享一篇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)文章

最新評論

平利县| 静安区| 郴州市| 老河口市| 斗六市| 江油市| 宁都县| 肥城市| 固始县| 会东县| 越西县| 神池县| 轮台县| 来宾市| 邓州市| 临江市| 崇州市| 宁国市| 堆龙德庆县| 东光县| 隆安县| 青河县| 五原县| 天柱县| 达日县| 桓台县| 长白| 纳雍县| 桃园市| 嘉禾县| 韶山市| 金平| 花莲市| 衡水市| 临朐县| 贺兰县| 灵台县| 辛集市| 天镇县| 德惠市| 营口市|