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

深入理解vue.js中$watch的oldvalue與newValue

 更新時(shí)間:2017年08月07日 09:33:05   作者:zuank  
這篇文章主要給大家介紹了關(guān)于vue.js中$watch的oldvalue與newValue的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),并且介紹了關(guān)于watch的其他測(cè)試,對(duì)大家學(xué)習(xí)或者使用vue.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起看看吧。

$watch中的oldvalue和newValue

大家都知道,在vue.js中給我們提供了$watch的方法來(lái)做對(duì)象變化的監(jiān)聽(tīng),而且在callback中會(huì)返回兩個(gè)對(duì)象,分別是oldValue和newValue.

顧名思義,這兩個(gè)對(duì)象就是對(duì)象發(fā)生變化前后的值。

但是在使用過(guò)程中我發(fā)現(xiàn)這兩個(gè)值并不總是預(yù)期的。下面來(lái)一起看看詳細(xì)的介紹:

定義data的值

data: {
 arr: [{
  name: '笨笨',
  address: '上海'
 }, {
  name: '笨笨熊',
  address: '北京'
 }],
 obj: {
  name: '呆呆',
  address: '蘇州'
 },
 str: '哈哈哈'
 }

定義watch

watch: {
 arr: function(newValue, oldValue) {
  console.log(newValue, oldValue)
  console.log(JSON.stringify(oldValue) === JSON.stringify(newValue))
 },
 obj: function(newValue, oldValue) {
  console.log(newValue, oldValue)
  console.log(JSON.stringify(oldValue) === JSON.stringify(newValue))
 },
 str: function(newValue, oldValue) {
  console.log(newValue, oldValue)
  console.log(JSON.stringify(oldValue) === JSON.stringify(newValue))
 },
 }

定義事件觸發(fā)

methods: {
 test() {
  this.arr.push({
  name: 9
  })
  this.$set(this.obj, 'i', 0)
  this.str = ''
 },
 test1() {
  this.arr = [{
  name: '000'
  }]
  this.obj = {
  name: 999
  }
  this.str = '123'
 }
 }

測(cè)試結(jié)果為

  1. 對(duì)數(shù)組進(jìn)行push操作和對(duì)Obj進(jìn)行$set操作,雖然都可能觸發(fā)watch事件,但是在callback返回的結(jié)果中,oldValue和newValue相同。字符串對(duì)象如預(yù)期返回
  2. 在對(duì)數(shù)組和Obj統(tǒng)一進(jìn)行賦值操作時(shí),watch觸發(fā)并且oldValue和newValue如預(yù)期返回

關(guān)于watch的其他測(cè)試

不能夠觸發(fā)監(jiān)聽(tīng)的

1、數(shù)組

        修改某個(gè)下標(biāo)的某個(gè)屬性的值

        使用原生delete刪除某個(gè)屬性

        對(duì)某個(gè)下標(biāo)新增一個(gè)屬性(不使用$set)

        對(duì)某個(gè)下標(biāo)重新賦值

2、對(duì)象

        修改某個(gè)屬性的值(但是會(huì)觸發(fā)這個(gè)屬性的監(jiān)聽(tīng))

        新增一個(gè)屬性(不使用$set)

        原生delete刪除某個(gè)屬性

以上總結(jié)可能存在不足

萬(wàn)金油實(shí)現(xiàn)watch監(jiān)聽(tīng)

在修改完數(shù)據(jù)后添加這樣一段代碼

array

arr = [...arr]

obj

obj = {...obj}

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論

陇南市| 大足县| 松溪县| 东至县| 洱源县| 温州市| 铅山县| 新田县| 板桥市| 新和县| 岳池县| 固安县| 华蓥市| 阿合奇县| 禄丰县| 莫力| 金寨县| 中山市| 东辽县| 邵阳市| 海阳市| 梅河口市| 康马县| 黑山县| 永川市| 湖州市| 舒城县| 虹口区| 乐至县| 沾化县| 准格尔旗| 桃园县| 阜新市| 清涧县| 晋中市| 阳高县| 泾阳县| 宜君县| 英山县| 泸定县| 张家港市|