成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Vue數(shù)據(jù)雙向綁定的簡(jiǎn)單實(shí)現(xiàn)

dance / 2835人閱讀

摘要:當(dāng)然這個(gè)是簡(jiǎn)單版本的復(fù)雜版本的就如果只是簡(jiǎn)單實(shí)現(xiàn)一下的數(shù)據(jù)綁定還是很簡(jiǎn)單的只要將思路理清楚就可以。

這篇仿Vue數(shù)據(jù)綁定的簡(jiǎn)單實(shí)現(xiàn),是我看了一些文章之后,把他們的代碼研究懂了之后寫(xiě)出來(lái)的。當(dāng)然,這個(gè)是簡(jiǎn)單版本的,復(fù)雜版本的就...

如果只是簡(jiǎn)單實(shí)現(xiàn)一下Vue的數(shù)據(jù)綁定還是很簡(jiǎn)單的,只要將思路理清楚就可以。寫(xiě)的時(shí)候考慮的問(wèn)題就是2點(diǎn)。
問(wèn)題:
1)如何實(shí)現(xiàn)將數(shù)據(jù)層的數(shù)據(jù)顯示到視圖上
2)如何在視圖上的數(shù)據(jù)改變后,通知數(shù)據(jù)層相應(yīng)的數(shù)據(jù)發(fā)生了變化
3)如何讓兩者聯(lián)系起來(lái),當(dāng)一個(gè)數(shù)據(jù)改變時(shí),視圖上的所有數(shù)據(jù)層的數(shù)據(jù)進(jìn)行更新
第一個(gè)問(wèn)題要將數(shù)據(jù)層的數(shù)據(jù)顯示到視圖上,很明顯這個(gè)需要使用DOM操作,先判斷 el 下的子元素上的屬性是否有關(guān)鍵字(如: v-model、v-bind),如果有就將其與 data 中的key來(lái)進(jìn)行對(duì)比,然后data里的值渲染到頁(yè)面上。這里需要用到遞歸,從而使el下的每個(gè)層級(jí)的元素屬性都進(jìn)行一次篩選。
第二個(gè)問(wèn)題可以通過(guò)在相應(yīng)的元素(input)上進(jìn)行事件監(jiān)聽(tīng),當(dāng)視圖上的數(shù)據(jù)發(fā)生了變化就改變相對(duì)應(yīng)的數(shù)據(jù)成數(shù)據(jù)。這兩者之間需要一個(gè)監(jiān)聽(tīng)器,從而使當(dāng)一個(gè)改變時(shí),另外一個(gè)也跟著改變。
第三個(gè)問(wèn)題實(shí)現(xiàn)需要利用發(fā)布訂閱模式和ES5的Object.defineProperty()。首先要?jiǎng)?chuàng)建一個(gè)訂閱者,里面有一個(gè)方法,使視圖層上的值等于數(shù)據(jù)層的數(shù)據(jù)。在進(jìn)行DOM篩選時(shí),將對(duì)應(yīng)的數(shù)據(jù)、key、元素傳入訂閱者,在將這個(gè)訂閱者放在一個(gè)對(duì)象中,這個(gè)對(duì)象的key就是data的key。然后通過(guò)ES5的Object.defineProperty()來(lái)對(duì)data里的數(shù)據(jù)進(jìn)行數(shù)據(jù)劫持,當(dāng)data里的數(shù)據(jù)被重新設(shè)置,會(huì)觸發(fā)set函數(shù),然后觸發(fā)監(jiān)聽(tīng)者。

具體代碼如下:

    
    
    
        
        
        
        Document
    
        
{{name}}

這篇文章主要是參考于https://segmentfault.com/a/11... ,高難度的那個(gè)是https://www.cnblogs.com/canfo...。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/104297.html

相關(guān)文章

  • Vue雙向綁定原理,教你一步一步實(shí)現(xiàn)雙向綁定

    摘要:儲(chǔ)存訂閱器因?yàn)閷傩员槐O(jiān)聽(tīng),這一步會(huì)執(zhí)行監(jiān)聽(tīng)器里的方法這一步我們把也給弄了出來(lái),到這一步我們已經(jīng)實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的雙向綁定了,我們可以嘗試把兩者結(jié)合起來(lái)看下效果。總結(jié)本文主要是對(duì)雙向綁定原理的學(xué)習(xí)與實(shí)現(xiàn)。 當(dāng)今前端天下以 Angular、React、vue 三足鼎立的局面,你不選擇一個(gè)陣營(yíng)基本上無(wú)法立足于前端,甚至是兩個(gè)或者三個(gè)陣營(yíng)都要選擇,大勢(shì)所趨。 所以我們要時(shí)刻保持好奇心,擁抱變化,...

    Labradors 評(píng)論0 收藏0
  • 基于Object.defineProperty實(shí)現(xiàn)雙向數(shù)據(jù)綁定

    摘要:雙向數(shù)據(jù)綁定可算是前端領(lǐng)域經(jīng)久不衰的熱詞,不管是前端開(kāi)發(fā)還是面試都會(huì)有所涉及。因此,中的挺身而出,拯救了中對(duì)數(shù)組數(shù)據(jù)處理的不足。有興趣的朋友請(qǐng)期待筆者的下一篇博客,討論下用實(shí)現(xiàn)雙向數(shù)據(jù)綁定。 雙向數(shù)據(jù)綁定可算是前端領(lǐng)域經(jīng)久不衰的熱詞,不管是前端開(kāi)發(fā)還是面試都會(huì)有所涉及。而且不同的框架也想盡一切辦法去實(shí)現(xiàn)這一特性,比如:Knockout / Backbone --- 發(fā)布-訂閱模式Ang...

    fredshare 評(píng)論0 收藏0
  • Vue面試題精選:Vue原理以及雙向數(shù)據(jù)綁定實(shí)戰(zhàn)過(guò)程

    摘要:雙向數(shù)據(jù)綁定指的是,將對(duì)象屬性變化與視圖的變化相互綁定。數(shù)據(jù)雙向綁定已經(jīng)了解到是通過(guò)數(shù)據(jù)劫持的方式來(lái)做數(shù)據(jù)綁定的,其中最核心的方法便是通過(guò)來(lái)實(shí)現(xiàn)對(duì)屬性的劫持,達(dá)到監(jiān)聽(tīng)數(shù)據(jù)變動(dòng)的目的。和允許觀察數(shù)據(jù)的更改并觸發(fā)更新。 1 MVVM 雙向數(shù)據(jù)綁定指的是,將對(duì)象屬性變化與視圖的變化相互綁定。換句話說(shuō),如果有一個(gè)擁有name屬性的user對(duì)象,與元素的內(nèi)容綁定,當(dāng)給user.name賦予一個(gè)新...

    malakashi 評(píng)論0 收藏0
  • 實(shí)現(xiàn)一個(gè)簡(jiǎn)單雙向綁定

    摘要:下圖展示了實(shí)現(xiàn)雙向綁定的流程實(shí)現(xiàn)一個(gè)簡(jiǎn)單的雙向綁定雙向綁定最最最初級(jí)進(jìn)階版操作是非常耗時(shí)和好性能,所以在優(yōu)化過(guò)程中先從操作入手。 接觸Vue有一段時(shí)間了,但是對(duì)于其雙向綁定的實(shí)現(xiàn)一直是似懂非懂,今天看到一篇寫(xiě)的比較好的文章 傳送門1 根據(jù)原作者的指導(dǎo)自己也去實(shí)現(xiàn)了一遍簡(jiǎn)單的 demo (本文的demo均基于Object.defineProperty 實(shí)現(xiàn)數(shù)據(jù)劫持,利用了對(duì)Vue.js實(shí)...

    elisa.yang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<