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

Vue中對(duì)watch的理解(關(guān)鍵是immediate和deep屬性)

 更新時(shí)間:2022年11月07日 14:37:42   作者:李疆~  
watch偵聽(tīng)器,是Vue實(shí)例的一個(gè)屬性,是用來(lái)響應(yīng)數(shù)據(jù)的變化,需要在數(shù)據(jù)變化時(shí)執(zhí)行異步或開(kāi)銷(xiāo)較大的操作時(shí),這個(gè)方式是最有用的,這篇文章主要介紹了Vue中對(duì)watch的理解,需要的朋友可以參考下

watch是什么?

watch:偵聽(tīng)器,是Vue實(shí)例的一個(gè)屬性,是用來(lái)響應(yīng)數(shù)據(jù)的變化,需要在數(shù)據(jù)變化時(shí)執(zhí)行異步或開(kāi)銷(xiāo)較大的操作時(shí),這個(gè)方式是最有用的。

watch的使用

watch基礎(chǔ)語(yǔ)法

watch: {
?? ?被監(jiān)聽(tīng)的數(shù)據(jù): {
?? ??? ?handler(數(shù)據(jù)改變后的值, 數(shù)據(jù)改變之前的值) {
?? ??? ??? ?相關(guān)代碼邏輯...
?? ??? ?}
?? ?}
}
  • 被監(jiān)聽(tīng)的數(shù)據(jù):data中定義的數(shù)據(jù);
  • 數(shù)據(jù)改變后的值:該數(shù)據(jù)改變后的新值;
  • 數(shù)據(jù)改變之前的值:該數(shù)據(jù)改變之前的值。

$watch()監(jiān)聽(tīng)某個(gè)值(雙向綁定)的變化,一旦發(fā)生變化,就調(diào)用引號(hào)里的方法,從而達(dá)到change事件監(jiān)聽(tīng)的效果?。?/p>

首先確認(rèn) watch是一個(gè)對(duì)象,一定要當(dāng)成對(duì)象來(lái)用。 對(duì)象就有鍵,有值。 
鍵:就是你要監(jiān)控的那個(gè)家伙,比如說(shuō)$route,這個(gè)就是要監(jiān)控路由的變化?;蛘呤莇ata中的某個(gè)變量。 
值可以是函數(shù):就是當(dāng)你監(jiān)控的家伙變化時(shí),需要執(zhí)行的函數(shù),這個(gè)函數(shù)有兩個(gè)形參,第一個(gè)是變化后的值,第二個(gè)是原始值。 
值也可以是函數(shù)名:不過(guò)這個(gè)函數(shù)名要用單引號(hào)來(lái)包裹。 
值是包括選項(xiàng)的對(duì)象:選項(xiàng)包括有三個(gè),如下

  • 第一個(gè)handler:其值是一個(gè)回調(diào)函數(shù)。即監(jiān)聽(tīng)到變化時(shí)應(yīng)該執(zhí)行的函數(shù)。
  • 第二個(gè)是deep:其值是true或false;確認(rèn)是否深入監(jiān)聽(tīng)。(一般監(jiān)聽(tīng)時(shí)是不能監(jiān)聽(tīng)到對(duì)象屬性值的變化的,數(shù)組的值變化可以聽(tīng)到。)
  • 第三個(gè)是immediate:其值是true或false;確認(rèn)是否以當(dāng)前的初始值執(zhí)行handler的函數(shù)。

 

對(duì)于immediate和deep,我有以下兩點(diǎn)理解:

1,immediate設(shè)為true后,則監(jiān)聽(tīng)的這個(gè)對(duì)象會(huì)立即輸出,也就是說(shuō)一刷新頁(yè)面就會(huì)在控制臺(tái)輸出,當(dāng)然此時(shí)頁(yè)面上的數(shù)據(jù)我們還沒(méi)來(lái)得及手動(dòng)讓其發(fā)生變化,所以在控制臺(tái)輸出的newValue為我們?cè)诖a中默認(rèn)設(shè)置的值,oldValue輸出為“undefined”。如

當(dāng)我們手動(dòng)改變newValue.id的值后,輸出如下:

如果不設(shè)置immediate,或者將immediate設(shè)為false的話,則刷新頁(yè)面后不會(huì)立即監(jiān)聽(tīng)此對(duì)象,也就是控制臺(tái)不會(huì)有輸出,必須要監(jiān)聽(tīng)的對(duì)象有值改變時(shí)控制臺(tái)才會(huì)有輸出。

2,deep設(shè)為true后,就可以深入監(jiān)聽(tīng)了。簡(jiǎn)單點(diǎn)說(shuō),就是可以監(jiān)聽(tīng)到對(duì)象里面的值的變化了。比如上面這個(gè)例子中,對(duì)象是“student”,這個(gè)對(duì)象里面的值有:id:1和studentName:‘李疆’,即

然后我們?cè)?lt;input>中綁定student.studentName,如下

正常情況下,watch是不能直接監(jiān)聽(tīng)到student對(duì)象中的studentName的,也就是說(shuō)在頁(yè)面改變studentName的值,控制臺(tái)是不會(huì)有任何反應(yīng)的。但是,如果我們?cè)O(shè)置deep為true后,此時(shí)在頁(yè)面改變studentName的值,控制臺(tái)就會(huì)輸出studentName的值,也就是能夠監(jiān)聽(tīng)到student對(duì)象中的studentName。好像有點(diǎn)繞,,

先看一下運(yùn)行結(jié)果:

附上代碼:

<template>
  <div class="about">
    <!-- <h1>This is an about page</h1> -->
    <p>username:<input type="text" v-model="username"> {{username}}</p>
    <p>password:<input type="text" v-model="password"> {{password}}</p>
    <p>age:<input type="text" v-model="age"> {{age}}</p>
    <p>student.id:<input type="text" v-model="student.id"> {{student.id}}</p>
    <p>student.studentName:<input type="text" v-model="student.studentName"> {{student.studentName}}</p>
 
  </div>
</template>
<script>
export default {
  data(){
    return{
      username:'lijiang',
      password:'123',
      age:21,
      student:{
        id:1,
        studentName:'李疆'
      }
    }
  },
  methods:{
     Test:function(newValue,oldValue){
           console.log('newValue:%s,oldValue:%s',newValue,oldValue);
     }
  },
  watch:{
    username:function(newValue,oldValue){
      console.log('username newValue:'+newValue+',username oldValue:'+oldValue);
    },
 
    password:'Test',
 
    age:{
      handler:function(newValue,oldValue){
        console.log('age newValue:'+newValue+',age oldValue:'+oldValue);
      },
      immediate:true //第一次刷新頁(yè)面時(shí)就會(huì)執(zhí)行
    },
 
    student:{
      handler:function(newValue,oldValue){
        console.log('student newValue.id:'+newValue.id+',student oldValue:'+oldValue);
      },
      immediate:true,
      deep:true
    },
    
    'student.studentName':'Test'
  }
}
</script>

例2 

watch的用法-immediate屬性

watch的用法-deep屬性

到此這篇關(guān)于Vue中對(duì)watch的理解的文章就介紹到這了,更多相關(guān)vue watch內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue實(shí)現(xiàn)拖拽效果

    vue實(shí)現(xiàn)拖拽效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)拖拽效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • element-ui循環(huán)顯示radio控件信息的方法

    element-ui循環(huán)顯示radio控件信息的方法

    今天小編就為大家分享一篇element-ui循環(huán)顯示radio控件信息的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • vue3使用vuedraggable和grid實(shí)現(xiàn)自定義拖拽布局方式

    vue3使用vuedraggable和grid實(shí)現(xiàn)自定義拖拽布局方式

    這篇文章主要介紹了vue3使用vuedraggable和grid實(shí)現(xiàn)自定義拖拽布局方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 在vue3項(xiàng)目中使用新版高德地圖的完整步驟

    在vue3項(xiàng)目中使用新版高德地圖的完整步驟

    項(xiàng)目需求需要引入地圖,對(duì)于目前最新的Vue3.0,無(wú)論是百度/高德/騰訊地圖目前還沒(méi)有適配,只有Vue?2.x版本的:?目前只有谷歌地圖的Vue3.0適配,下面這篇文章主要給大家介紹了關(guān)于如何在vue3項(xiàng)目中使用新版高德地圖的完整步驟,需要的朋友可以參考下
    2023-02-02
  • Vue中使用Ueditor的示例詳解

    Vue中使用Ueditor的示例詳解

    這篇文章主要介紹了Vue中使用Ueditor的方法,本文通過(guò)實(shí)例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • vue  directive定義全局和局部指令及指令簡(jiǎn)寫(xiě)

    vue directive定義全局和局部指令及指令簡(jiǎn)寫(xiě)

    這篇文章主要介紹了vue directive定義全局和局部指令及指令簡(jiǎn)寫(xiě),本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • vue腳手架搭建過(guò)程圖解

    vue腳手架搭建過(guò)程圖解

    vue腳手架是個(gè)好東西,能夠快速搭建vue單頁(yè)面應(yīng)用,vue是基于node環(huán)境的,所以要先安裝node。下面通過(guò)圖文并茂的形式給大家介紹vue腳手架搭建過(guò)程圖解,感興趣的朋友一起看看吧
    2018-06-06
  • 利用vue開(kāi)發(fā)一個(gè)所謂的數(shù)獨(dú)方法實(shí)例

    利用vue開(kāi)發(fā)一個(gè)所謂的數(shù)獨(dú)方法實(shí)例

    數(shù)獨(dú)是源自18世紀(jì)瑞士的一種數(shù)學(xué)游戲,是一種運(yùn)用紙、筆進(jìn)行演算的邏輯游戲。下面這篇文章主要給大家介紹了關(guān)于利用vue開(kāi)發(fā)一個(gè)所謂的數(shù)獨(dú)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-12-12
  • 前端vue項(xiàng)目如何使用Decimal.js做加減乘除求余運(yùn)算

    前端vue項(xiàng)目如何使用Decimal.js做加減乘除求余運(yùn)算

    decimal.js是使用的二進(jìn)制來(lái)計(jì)算的,可以更好地實(shí)現(xiàn)格化式數(shù)學(xué)運(yùn)算,對(duì)數(shù)字進(jìn)行高精度處理,使用decimal類(lèi)型處理數(shù)據(jù)可以保證數(shù)據(jù)計(jì)算更為精確,這篇文章主要給大家介紹了關(guān)于前端vue項(xiàng)目如何使用Decimal.js做加減乘除求余運(yùn)算的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • vue手機(jī)端input change時(shí),無(wú)法執(zhí)行的問(wèn)題及解決

    vue手機(jī)端input change時(shí),無(wú)法執(zhí)行的問(wèn)題及解決

    這篇文章主要介紹了vue手機(jī)端input change時(shí),無(wú)法執(zhí)行的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評(píng)論

民乐县| 津市市| 湛江市| 吉木乃县| 伊宁县| 铁岭市| 岑溪市| 浮山县| 丹东市| 临西县| 五常市| 太康县| 宝鸡市| 镇坪县| 蒲江县| 都兰县| 武义县| 乡宁县| 吉木萨尔县| 宜州市| 治多县| 田林县| 东乡县| 大宁县| 革吉县| 上蔡县| 平山县| 丰台区| 东乡县| 清水县| 嘉祥县| 建水县| 凤凰县| 兴安盟| 岑溪市| 客服| 临桂县| 大兴区| 昌乐县| 兴安盟| 临颍县|