做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

vue雙向數(shù)據(jù)綁定原理探究

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 20:26:16
文檔

vue雙向數(shù)據(jù)綁定原理探究

vue雙向數(shù)據(jù)綁定原理探究:雙向綁定的思想雙向數(shù)據(jù)綁定的思想就是數(shù)據(jù)層與UI層的同步,數(shù)據(jù)再兩者之間的任一者發(fā)生變化時(shí)都會(huì)同步更新到另一者。雙向綁定的一些方法目前,前端實(shí)現(xiàn)數(shù)據(jù)雙向數(shù)據(jù)綁定的方法大致有以下三種:1.發(fā)布者-訂閱者模式(backbone.js)思路:使用自定義的data屬
推薦度:
導(dǎo)讀vue雙向數(shù)據(jù)綁定原理探究:雙向綁定的思想雙向數(shù)據(jù)綁定的思想就是數(shù)據(jù)層與UI層的同步,數(shù)據(jù)再兩者之間的任一者發(fā)生變化時(shí)都會(huì)同步更新到另一者。雙向綁定的一些方法目前,前端實(shí)現(xiàn)數(shù)據(jù)雙向數(shù)據(jù)綁定的方法大致有以下三種:1.發(fā)布者-訂閱者模式(backbone.js)思路:使用自定義的data屬

雙向綁定的思想

雙向數(shù)據(jù)綁定的思想就是數(shù)據(jù)層與UI層的同步,數(shù)據(jù)再兩者之間的任一者發(fā)生變化時(shí)都會(huì)同步更新到另一者。

雙向綁定的一些方法

目前,前端實(shí)現(xiàn)數(shù)據(jù)雙向數(shù)據(jù)綁定的方法大致有以下三種:

1.發(fā)布者-訂閱者模式(backbone.js)

思路:使用自定義的data屬性在HTML代碼中指明綁定。所有綁定起來的JavaScript對(duì)象以及DOM元素都將“訂閱”一個(gè)發(fā)布者對(duì)象。任何時(shí)候如果JavaScript對(duì)象或者一個(gè)HTML輸入字段被偵測到發(fā)生了變化,我們將代理事件到發(fā)布者-訂閱者模式,這會(huì)反過來將變化廣播并傳播到所有綁定的對(duì)象和元素。

2.贓值檢測(angular.js)

思路:通過輪詢的方式檢測數(shù)據(jù)變動(dòng)。才特定的事件觸發(fā)時(shí)進(jìn)入贓值檢測。

大致如下:

? DOM事件,譬如用戶輸入文本,點(diǎn)擊按鈕等。( ng-click )

? XHR響應(yīng)事件 ( $http )

? 瀏覽器Location變更事件 ( $location )

? Timer事件( $timeout , $interval )

? 執(zhí)行 $digest() 或 $apply()

3.數(shù)據(jù)劫持(vue.js)

思路:使用Object.defineProperty對(duì)數(shù)據(jù)對(duì)象做屬性get和set的監(jiān)聽,當(dāng)有數(shù)據(jù)讀取和賦值操作時(shí)則調(diào)用節(jié)點(diǎn)的指令,這樣使用最通用的=等號(hào)賦值就可以觸發(fā)了。

wue雙向數(shù)據(jù)綁定小demo思路

① 構(gòu)造一個(gè)Wue對(duì)象,定義該對(duì)象的屬性el、data,創(chuàng)建對(duì)象的時(shí)候傳相應(yīng)數(shù)據(jù),并執(zhí)行init()方法。

var Wue=function(params){
 this.el=document.querySelector(params.el);
 this.data=params.data;
 this.init();
};

② Init方法中執(zhí)行bindText和bindModel方法,這兩個(gè)方法分別是解析dom中綁定了w-model、w-text指令的html,并作相應(yīng)處理。

init:function(){
 this.bindText();
 this.bindModel();
 }

③ bindText方法,把帶有w-text指令的元素放進(jìn)一個(gè)數(shù)組中,如:w-text='demo',然后令其innerHTML的值等于傳進(jìn)來的data[demo]。

bindText:function(){
 var textDOMs=this.el.querySelectorAll('[w-text]'),
 bindText;
 for(var i=0;i<textDOMs.length;i++){
 bindText=textDOMs[i].getAttribute('w-text');
 textDOMs[i].innerHTML=this.data[bindText];
 }
 }

④ bindModel方法,把帶有w-model指令的元素(一般為form相關(guān)元素)放進(jìn)一個(gè)數(shù)組中,如:w-model='demo',為每一個(gè)元素綁定keyup事件(兼容瀏覽器寫法)。

bindModel:function(){
 var modelDOMs=this.el.querySelectorAll('[w-model]'),
 bindModel;
 var _that=this;
 for(var i=0;i<modelDOMs.length;i++){
 bindModel=modelDOMs[i].getAttribute('w-model');
 modelDOMs[i].value=this.data[bindModel]||'';
 //數(shù)據(jù)劫持
 this.defineObj(this.data,bindModel);
 if(document.addEventListener){
 modelDOMs[i].addEventListener('keyup',function(event) {
 console.log('test');
 e=event||window.event;
 _that.data[bindModel]=e.target.value;
 },false);
 }else{
 modelDOMs[i].attachEvent('onkeyup',function(event){
 e=event||window.event;
 _that.data[bindModel]=e.target.value;
 },false);
 }
 }
}

⑤ 使用Object.defineProperty,定義set和get方法,并在set方法中調(diào)用bindText方法。這是利用了一旦w-model的值在input中被改變,會(huì)自動(dòng)執(zhí)行set方法,所以只有在這個(gè)方法中調(diào)用更新w-text的方法即可。

defineObj:function(obj,prop,value){
 var val=value||'';
 var _that=this;
 try{
 Object.defineProperty(obj,prop,{
 get:function(){
 return val;
 },
 set:function(newVal){
 val=newVal;
 _that.bindText();
 }
 })
 
 }catch (err){
 console.log('Browser not support!')
 }
 }

⑥使用

html:<br><h3>雙向數(shù)據(jù)綁定demo</h3>
<div id="wrap">
 <input type="text" w-model='demo'>
 <h5 w-text='demo'></h5>
</div><br>js:
 <script src='../js/wue.js'></script>
 <script>
 new Wue({
 el:'#wrap',
 data:{
 demo:'winty'
 }
 })
 </script>

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

vue雙向數(shù)據(jù)綁定原理探究

vue雙向數(shù)據(jù)綁定原理探究:雙向綁定的思想雙向數(shù)據(jù)綁定的思想就是數(shù)據(jù)層與UI層的同步,數(shù)據(jù)再兩者之間的任一者發(fā)生變化時(shí)都會(huì)同步更新到另一者。雙向綁定的一些方法目前,前端實(shí)現(xiàn)數(shù)據(jù)雙向數(shù)據(jù)綁定的方法大致有以下三種:1.發(fā)布者-訂閱者模式(backbone.js)思路:使用自定義的data屬
推薦度:
標(biāo)簽: 原理 VUE 雙向
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 石阡县| 建宁县| 威海市| 天津市| 临海市| 江北区| 库伦旗| 兴山县| 宾阳县| 巴中市| 边坝县| 古浪县| 舟曲县| 西和县| 台湾省| 曲水县| 延长县| 汶川县| 宜良县| 乐至县| 邹城市| 天台县| 磴口县| 宣威市| 卫辉市| 岱山县| 玛纳斯县| 博客| 镇原县| 扶沟县| 绩溪县| 阿拉尔市| 泸西县| 三门县| 称多县| 鄢陵县| 平顺县| 当雄县| 蒙阴县| 双江| 彭州市|