輕松理解vue的雙向數(shù)據(jù)綁定問(wèn)題
Vue介紹
Vue是當(dāng)前很火的一款MVVM的輕量級(jí)框架,它是以數(shù)據(jù)驅(qū)動(dòng)和組件化的思想構(gòu)建的。因?yàn)樗峁┝撕?jiǎn)潔易于理解的api,使得我們很容易上手。
Vue與MVVM
如果你之前已經(jīng)習(xí)慣了用jQuery操作DOM,學(xué)習(xí)Vue.js時(shí)請(qǐng)先拋開(kāi)手動(dòng)操作DOM的思維,因?yàn)閂ue.js是數(shù)據(jù)驅(qū)動(dòng)的,你無(wú)需手動(dòng)操作DOM。Vue以數(shù)據(jù)為驅(qū)動(dòng),將自身的Dom元素與數(shù)據(jù)進(jìn)行綁定,一旦創(chuàng)建綁定,Dom和數(shù)據(jù)保持同步。
雙向綁定
主流雙向數(shù)據(jù)綁定實(shí)現(xiàn)原理
臟值檢測(cè) : 這是AngularJS實(shí)現(xiàn)雙向數(shù)據(jù)綁定的方式。 原理是 當(dāng)數(shù)據(jù)進(jìn)行變更的時(shí)候?qū)λ蠱odel和View的綁定關(guān)系進(jìn)行一次檢查,識(shí)別是否有數(shù)據(jù)進(jìn)行了變更,如果有變化則進(jìn)行處理,由于可能進(jìn)一步引發(fā)其他數(shù)據(jù)的改變,會(huì)再次循環(huán)這個(gè)過(guò)程,知道沒(méi)有數(shù)據(jù)的變化之后。發(fā)送數(shù)據(jù)到視圖重新渲染。 可想而知,這樣的方式性能不高。
單向數(shù)據(jù)綁定
指的是我們先把模板寫好,然后把模板和數(shù)據(jù)(數(shù)據(jù)可能來(lái)自后臺(tái))整合到一起形成HTML代碼,然后把這段HTML代碼插入到文檔流里面。
單向數(shù)據(jù)綁定缺點(diǎn):HTML代碼一旦生成完以后,就沒(méi)有辦法再變了,如果有新的數(shù)據(jù)來(lái)了,那就必須把之前的HTML代碼去掉,再重新把新的數(shù)據(jù)和模板一起整合后插入到文檔流中。 簡(jiǎn)單的來(lái)說(shuō)就是DOM操作直接改變
數(shù)據(jù)數(shù)據(jù)雙向
數(shù)據(jù)模型(Module)和視圖(View)之間的雙向綁定。
用戶在視圖上的修改會(huì)自動(dòng)同步到數(shù)據(jù)模型中去,同樣的,如果數(shù)據(jù)模型中的值發(fā)生了變化,也會(huì)立刻同步到視圖中去。雙向數(shù)據(jù)綁定的優(yōu)點(diǎn)是無(wú)需進(jìn)行和單向數(shù)據(jù)綁定的那CRUD(Create,Retrieve,Update,Delete)操作雙向數(shù)據(jù)綁定最經(jīng)常的應(yīng)用場(chǎng)景就是表單了,這樣當(dāng)用戶在前端頁(yè)面完成輸入后,不用任何操作,我們就已經(jīng)拿到了用戶的數(shù)據(jù)存放到數(shù)據(jù)模型中了。
如何使用js達(dá)到雙向數(shù)據(jù)綁定
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input type="text" id="userName"> <br> <span id ="uName"></span> <script> var obj={ pwd:"1234" }; //主要使用到了get和set方法,最為關(guān)鍵 Object.defineProperty(obj,"userName",{ get:function(){ console.log('get init'); }, set:function(val){ console.log("set init"); document.getElementById("uName").innerText=val; document.getElementById("userNmae").value=val; } }); document.getElementById("userName").addEventListener("keyup",function(event){ obj.userName=event.target.value; } ) </script> </body> </html>
運(yùn)行上述的dome,可以使用控制臺(tái),obj.username=123賦值,會(huì)自動(dòng)觸發(fā)set方法。若我們?cè)诳刂婆_(tái)使用obj.username拿值可以觸發(fā)get方法,這也就是vue的雙向數(shù)據(jù)綁定的核心點(diǎn)。
總結(jié)
以上所述是小編給大家介紹的輕松理解vue的數(shù)據(jù)雙向綁定問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Vue.js實(shí)現(xiàn)雙向數(shù)據(jù)綁定方法(表單自動(dòng)賦值、表單自動(dòng)取值)
- 詳解Vue雙向數(shù)據(jù)綁定原理解析
- vue.js使用v-model實(shí)現(xiàn)表單元素(input) 雙向數(shù)據(jù)綁定功能示例
- vue雙向數(shù)據(jù)綁定原理探究(附demo)
- 通過(guò)源碼分析Vue的雙向數(shù)據(jù)綁定詳解
- vue3.0中的雙向數(shù)據(jù)綁定方法及優(yōu)缺點(diǎn)
- Vue 框架之鍵盤事件、健值修飾符、雙向數(shù)據(jù)綁定
- vue雙向數(shù)據(jù)綁定知識(shí)點(diǎn)總結(jié)
- vue.js的雙向數(shù)據(jù)綁定Object.defineProperty方法的神奇之處
- vue 雙向數(shù)據(jù)綁定的實(shí)現(xiàn)學(xué)習(xí)之監(jiān)聽(tīng)器的實(shí)現(xiàn)方法
- vue.js自定義組件實(shí)現(xiàn)v-model雙向數(shù)據(jù)綁定的示例代碼
- vue中的雙向數(shù)據(jù)綁定原理與常見(jiàn)操作技巧詳解
相關(guān)文章
Vue實(shí)現(xiàn)點(diǎn)擊顯示不同圖片的效果
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)點(diǎn)擊顯示不同圖片的效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08關(guān)于下拉類型多選組件Vue-Treeselect(鍵名轉(zhuǎn)換)
這篇文章主要介紹了關(guān)于下拉類型多選組件Vue-Treeselect(鍵名轉(zhuǎn)換),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07Vant picker選擇器設(shè)置默認(rèn)值導(dǎo)致選擇器失效的解決
這篇文章主要介紹了Vant picker選擇器設(shè)置默認(rèn)值導(dǎo)致選擇器失效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01VUE學(xué)習(xí)之Element-ui文件上傳實(shí)例詳解
今天進(jìn)行了element?文件上傳組件的運(yùn)用,寫一下心得,下面這篇文章主要給大家介紹了關(guān)于VUE學(xué)習(xí)之Element-ui文件上傳的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10VUE前端導(dǎo)出文件之file-saver插件安裝使用教程
這篇文章主要給大家介紹了關(guān)于VUE前端導(dǎo)出文件之file-saver插件安裝使用的相關(guān)資料,file-saver是一個(gè)用于保存文件的JavaScript庫(kù),它提供了一種簡(jiǎn)單的方式來(lái)生成和保存文件,支持各種文件類型,例如文本文件、圖片、PDF等,需要的朋友可以參考下2024-05-05