91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

VUE中watch監聽器怎么用

發布時間:2021-10-21 09:05:02 來源:億速云 閱讀:188 作者:小新 欄目:開發技術

小編給大家分享一下VUE中watch監聽器怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

偵聽器一般來說是用來監聽數據的變化,默認是在數據發生變化時執行。

監聽的數據名放到這里面作為函數名,這個函數里面有兩個參數,一個是新值,一個是舊值。

在vue中,使用watch來響應數據的變化,關于watch的用法大致有三種。

1、下面代碼是watch的一種簡單的用法

<div id="app">
    <input type="text" v-model="firstName" />
</div>
 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 <script>
var vm=new Vue({
    el:"#app",
    data:{
        firstName:"張"
    },
    watch:{         
        firstName:(newVal,oldVal){
//firstName即為你想監聽的數據的名稱,要監聽誰函數名就用誰的 如監聽v-model的firstName                    
//newVal:表示改變后的值,即第一個形參,不要調換位置
//oldVal:表示改變前的值,
            console.log({newVal,oldVal});   //  {newVal: "陳", oldVal: "張"}
        }
        //直接寫一個監聽處理函數,當每次監聽到cityName值發生改變時,執行函數。
        //也可以在所監聽的數據后面直接加字符串形式的方法名:firstName: 'nameChange'
    },
    methods:{
        nameChange(){
         }
    }
})
 vm.firstName = "陳";//改變監聽的值
</script>

2、immediate 立即監聽

使用watch基本用法時有一個特點,就是當值第一次綁定的時候,不會執行監聽函數,只有值發生改變才會執行。如果我們需要在最初綁定值的時候也執行函數,則就需要用到immediate屬性。

watch: {
  firstName: {
    handler(newName, oldName) {
      this.fullName = newName + ' ' + this.lastName;
    },
    { immediate: true }
  }
}

監聽的數據后面寫成對象形式,包含handler方法和immediate,上面簡單的寫法我們寫的函數其實就是在寫這個handler方法、默認省略而已。

3、handler方法

<div id="app">
    <div>
        <p>Number: {{ myNumber }}</p>
        <p>Number: <input type="text" v-model.number="myNumber"></p>
    </div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
new Vue({
    el: '#app',
    data: {
        myNumber: 'Dawei'
    },
    watch: {
        myNumber: {
            handler(newVal, oldVal) {
                console.log('newVal', newVal);
                console.log('oldVal', oldVal);
            },
            //immediate為true時則立即觸發回調函數;如果為false,則和上面的例子一樣,不會立即執行回調。
            immediate: true
          }
      }
 })
</script>
//handler方法就是你watch中需要具體執行的方法

4、 deep屬性

對于對象或者對象中的屬性,我們如何監聽?那么就介紹deep屬性。它的作用就是解決這個問題的關鍵。

 <div id="root">
    <p>obj.a: {{obj.a}}</p>
    <p>obj.a: <input type="text" v-model="obj.a"></p>
</div> 
 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 <script>
    new Vue({
        el: '#root',
        data: {
            obj: {
                 a: 123
            }
        },
        watch: {
            obj: {
            handler(newName, oldName) {
                console.log(newName, oldName);
            },
            immediate: true,
            deep:true
            }
        } 
})
</script>

上面的代碼如果不加deep:true 那么console中就不會執行,只執行第一次,輸出結果為undefined

默認情況下 handler 只監聽obj這個屬性它的引用的變化,我們只有給obj賦值的時候它才會監聽到。

這個時候就可以使用deep深入觀察,監聽器會一層層的往下遍歷,給對象的所有屬性都加上這個監聽器,但是這樣消耗過大。

以上是“VUE中watch監聽器怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

苍梧县| 高淳县| 巴南区| 泊头市| 兴城市| 宜川县| 柞水县| 贵阳市| 文成县| 明星| 商丘市| 石林| 根河市| 思南县| 罗源县| 丘北县| 平陆县| 洪泽县| 广昌县| 六枝特区| 榆树市| 龙井市| 吉木乃县| 沈阳市| 广宗县| 清徐县| 新巴尔虎右旗| 曲麻莱县| 平乐县| 琼海市| 胶州市| 磴口县| 剑河县| 景德镇市| 肥乡县| 精河县| 团风县| 武安市| 临沭县| 高雄市| 仪征市|