欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么深入了解vue中的v-model

這篇文章給大家介紹怎么深入了解vue中的v-model,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供紅塔企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、做網(wǎng)站、html5、小程序制作等業(yè)務(wù)。10年已為紅塔眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進(jìn)行中。

首先,要明白我們學(xué)習(xí)v-model的作用是什么

一個組件上的 v-model 默認(rèn)會利用名為 value 的 prop 和名為 input 的事件,但是像單選框、復(fù)選框等類型的輸入控件可能會將 value attribute 用于不同的目的。model 選項可以用來避免這樣的沖突  ---這是在vue官網(wǎng)找到的解答。

其次,是我們要知道v-model的本質(zhì)以及他的實現(xiàn)原理是什么

在我看來v-model本身就是一個語法糖,實際上就是給我們提供了一個vue的內(nèi)置指令,通過這樣的方式既簡化了我們的代碼也能讓我們明白這個命令應(yīng)該怎么去使用

使用v-model指令能夠讓我們直接獲取到我們在input框里面輸入的內(nèi)容,將輸入的內(nèi)容保存到我們的data數(shù)據(jù)里面,當(dāng)input的value值發(fā)生改變的時候就會自動更新data數(shù)據(jù)同時也會使相應(yīng)的視圖進(jìn)行更新渲染。

  <div class="about">
    <p>{{model}}</p>
    <!-- v-model -->
    <input type="text" v-model="model"> 
  </div>
</template>
<script>
export default {
  data() {
    return {
      model:'',
    }
  },
}
</script>

雙向綁定MVVM他的原理其實就是監(jiān)聽數(shù)據(jù)當(dāng)數(shù)據(jù)發(fā)生改變的時候繼而更新頁面視圖。

MVVM流程圖

下圖就是雙向綁定的原理,通過數(shù)據(jù)劫持以及模板解析通過一步步流程來監(jiān)聽我們的數(shù)據(jù)更新視圖

怎么深入了解vue中的v-model

Observer數(shù)據(jù)劫持相關(guān)代碼

Observer其實就是個觀察者 他通過循環(huán)遍歷來監(jiān)聽我們data數(shù)據(jù)中的每一項,當(dāng)data數(shù)據(jù)發(fā)生改變的時候,就會通過notify方法派發(fā)更新給訂閱者,同時進(jìn)行Compile進(jìn)行我們的文本編譯從而實現(xiàn)部分視圖進(jìn)行更新。

class Observe {
    constructor(vm) {
        this.walk(vm.data)
    }
    // 循環(huán)遍歷 讓 data 里每一個key 都監(jiān)聽 
    walk(data) {
        Object.keys(data).forEach( key => {
            this.defineReactive(data, key, data[key])
        })
    }

    // 定義響應(yīng)式  這個函數(shù)也是響應(yīng)式的核心函數(shù)
    defineReactive(data, key, value) {
        let dep = new Dep()
        Object.defineProperty(data, key, {
            get() {
                console.log('觸發(fā) get 收集依賴');
                // 收集依賴
                if( Dep.target ) {
                    // 添加訂閱者
                    dep.addSub(Dep.target)
                }
                return value
            },
            set(newValue) {
                console.log(value, '觸發(fā) set 派發(fā)更新');
                // 新值覆蓋舊值
                value = newValue
                // 派發(fā)更新
                dep.notify()
            },
        })
    }
}

Watcher視圖更新

Watcher就是我們的訂閱者,通過update方法進(jìn)行視圖的更新

    constructor(vm, exp, cb ) {
        this.vm = vm;
        this.exp = exp;
        this.cb = cb;
        this.value = this.get()
    }
    // 更新
    update() {
        this.run()
    }
    // 更新 DOM
    run() {
        const value = this.get()
        // 新舊值進(jìn)行比對
        if( value !== this.value ) {
            // 調(diào)用回調(diào)函數(shù) 
            this.cb.call(this.vm, value)
        }
    }

    // 收集依賴
    get() {
        Dep.target = this
        let value = this.vm.data[this.exp]
        Dep.target = null;
        return value
    }
}

關(guān)于怎么深入了解vue中的v-model就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

網(wǎng)頁標(biāo)題:怎么深入了解vue中的v-model
本文URL:http://chinadenli.net/article4/gpdhie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)站設(shè)計公司、小程序開發(fā)、虛擬主機(jī)、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
久七久精品视频黄色的| 暴力三级a特黄在线观看| 日韩精品毛片视频免费看 | 久久亚洲精品成人国产| 亚洲淫片一区二区三区| 国产熟女一区二区精品视频| 插进她的身体里在线观看骚| 国内精品美女福利av在线| 殴美女美女大码性淫生活在线播放| 亚洲国产性感美女视频| 少妇人妻精品一区二区三区| 欧美黑人黄色一区二区| 久草精品视频精品视频精品| 亚洲精品av少妇在线观看| 亚洲淫片一区二区三区| 日韩国产欧美中文字幕| 亚洲av日韩一区二区三区四区| 中文字幕有码视频熟女| 精品一区二区三区人妻视频| 日本二区三区在线播放| 成人午夜视频在线播放| 中文字幕人妻一区二区免费| 国产三级不卡在线观看视频| 精品久久久一区二区三| 午夜成年人黄片免费观看| 伊人欧美一区二区三区| 亚洲另类女同一二三区| 国产精品推荐在线一区| 偷拍偷窥女厕一区二区视频 | 国产精品一区二区三区黄色片| 国产精品一区二区日韩新区| 日韩一区二区三区免费av| 日本一区不卡在线观看| 伊人欧美一区二区三区| 日韩一区二区三区免费av| 日本和亚洲的香蕉视频| 日韩一区二区三区18| 在线观看视频日韩精品| 国产亚洲欧美日韩精品一区 | 日韩熟妇人妻一区二区三区 | 欧美自拍系列精品在线|