亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Angular數據綁定機制原理

2019-11-19 14:01:07
字體:
來源:轉載
供稿:網友

1.Angular.js擴展瀏覽器的事件循環

瀏覽器持續等待例如用戶交互這樣的事件。當你在一個<input>標簽里輸入字符之后,這個事件的回調函數在JS解釋器中執行了其包含的DOM操作,執行完畢后,瀏覽器響應地對DOM做出了變化。Angular拓展了這個事件循環,使它有時候成為angular context 的執行環境。

2.$watch list

$watch 可以檢測model的變化。每當綁定一個數據到view上的時候,$watch隊列就會插入一條對應的$watch。例子如下:

controller.js:

app.controller('MainCtrl', function($scope) { $scope.people = [...]; // 假設長度為10});

index.html:

<ul> <li ng-repeat="person in people">   {{person.name}} - {{person.age}} </li></ul>

其中ng-repeat 生成了一個1個$watch,每個person生成了2個$watch,總共是(1+2*10),21個$watch。$watch的生成階段是模板加載完成,也就是linking階段。(angular分為compile和linking階段),Angular會尋找每個directive(上面的例子中ng-repeat和{{}}都屬于directive),然后生成每個$watch。

3.$digest 循環

當瀏覽器接收到angular context相關的事件時,$digest循環就會被觸發。它由2個小循環組成,1個處理evalAsync 隊列,另一個處理$watch隊列。$digest進行循環時,將遍歷$watch隊列,查看是否有數據更新過,這種遍歷就叫做dirty-checkin(臟檢查),如果臟檢查發現有$watch更新,將會觸發新的臟檢查,直到所有的$watch都沒有更新。這樣就能保證每個model都不會變化。

臟檢查超過10次后會拋出異常防止無限循環。$digest循環結束后DOM會相應地發生變化。其實$digest從字面意義理解就像“消化”的過程一樣,逐漸地把所有營養($watch的變化)都吸收掉。

4.通過$apply 進入 angular context

$apply 決定事件是否進入angular context,使用angualr的自帶directive,比如ng-model,更改綁定的數據時,angular會將事件封裝到$apply中。比如,ng-model="name"的輸入框,輸入字符“w”,事件會調用,$apply("name='w';"),完成$scope中的數據更新。

調用第三方庫時的數據綁定

當在angular中調用jquery,并不能更新jquery綁定的數據,因為jquery沒有調用$apply,事件沒有進入angular context,導致$digest沒有執行。例子如下:

app.js

 app.directive('clickable', function() {  return {   restrict: "E",   scope: {    count1: '=',    count2: '='   },   template: '<ul style="background-color: lightblue"><li>{{count1}}</li><li>{{count2}}</li></ul>',   link: function(scope, element, attrs) {    element.bind('click', function() {     scope.count1++;     scope.count2++;    });   }  }});app.controller('MainCtrl', function($scope) { $scope.count1= 0; $scope.count2= 0;});

例子中,每次點擊該元素,預期count1和count2都會自增1,但實際沒有。其實$scope(ViewModel)已經改變,但是沒有強制執行$digest。修改click事件如下:

element.bind('click', function() { scope.$apply(function() {   scope.foo++;   scope.bar++; });})

經過調用$apply實現了預期。

5.總結

angular事件綁定機制如下圖:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人免费自拍视频| 国产精品美女免费| 国产精品久久久久久亚洲影视| 久久91亚洲人成电影网站| 亚洲性av在线| 日本a级片电影一区二区| 亚洲精品第一页| 欧洲成人免费aa| 欧美精品性视频| 国产mv久久久| 色悠悠久久久久| 国产精品69精品一区二区三区| 美女av一区二区三区| 亚洲精品免费一区二区三区| 国产精品美女免费| 国产精品欧美久久久| 97国产精品免费视频| 国产精品一区久久| 亚洲在线免费看| 国产xxx69麻豆国语对白| 亚洲国语精品自产拍在线观看| 国产精品999| 成人看片人aa| 国产日韩欧美视频| 亚洲影院色在线观看免费| 亚洲欧洲在线看| 在线播放精品一区二区三区| 欧美日本高清视频| 欧美另类老女人| 亚洲欧美国产日韩中文字幕| 伊人久久久久久久久久久久久| 日韩一区二区久久久| 在线电影av不卡网址| 久久精品夜夜夜夜夜久久| 成人免费大片黄在线播放| 亚洲一区制服诱惑| 亚洲精品在线91| 日韩av一区在线| 亚洲第一av网站| 久久精品国产成人| 欧美亚洲另类制服自拍| 国内偷自视频区视频综合| 久久人人爽人人爽人人片av高请| 久久精品99久久久久久久久| 日韩精品一二三四区| 久久久精品电影| 91老司机在线| 国内精品小视频| 97涩涩爰在线观看亚洲| 色小说视频一区| 欧美在线视频在线播放完整版免费观看| 久久av红桃一区二区小说| 性夜试看影院91社区| 亚洲人成网站色ww在线| 海角国产乱辈乱精品视频| 亚洲精品在线不卡| 成人亲热视频网站| 日韩av电影在线播放| 伊人久久大香线蕉av一区二区| 中文字幕一区二区精品| 国产激情视频一区| 久久久精品在线观看| 久久久精品视频成人| 久久久伊人日本| 午夜精品免费视频| 久久久久久亚洲精品中文字幕| 久久天天躁狠狠躁老女人| 国产精品久久电影观看| 91视频免费网站| 久久99亚洲热视| 欧美在线视频在线播放完整版免费观看| 亚洲精品美女久久久| 日韩中文字幕网站| 秋霞av国产精品一区| 久久精品青青大伊人av| 色吧影院999| 亚洲福利视频网站| 国产精品大片wwwwww| 国产精品你懂得| 国产精品视频1区| 欧美激情一区二区久久久| 亚洲电影免费观看高清完整版在线| 深夜福利亚洲导航| 成人性生交大片免费观看嘿嘿视频| 性欧美办公室18xxxxhd| 久久久免费精品| 国产精品久久av| 91久久久久久久| 欧美激情在线播放| 中文字幕亚洲欧美| 亚洲石原莉奈一区二区在线观看| 亚洲欧美在线磁力| 亚洲在线一区二区| 在线视频欧美日韩精品| 日韩免费电影在线观看| 国产成人小视频在线观看| 亚洲日韩欧美视频| 国产欧美最新羞羞视频在线观看| 久久久精品欧美| 亚洲一区二区三区xxx视频| 26uuu亚洲伊人春色| 亚洲人成在线播放| 岛国精品视频在线播放| www国产精品视频| 亚洲欧美激情在线视频| 国产午夜精品全部视频在线播放| 精品福利在线观看| 性欧美视频videos6一9| 久久精品国产91精品亚洲| 日本韩国欧美精品大片卡二| 亚洲视频免费一区| 欧美性黄网官网| 一区二区日韩精品| 亚洲精品电影久久久| 色婷婷综合久久久久中文字幕1| 精品国产一区二区三区久久狼5月| 国产精品久在线观看| 国产精品久久久久久久久久免费| 91亚洲永久免费精品| 色偷偷888欧美精品久久久| 成人黄色短视频在线观看| 亚洲人高潮女人毛茸茸| 国产精品免费视频xxxx| 疯狂蹂躏欧美一区二区精品| 国产日韩在线看| 91在线直播亚洲| 午夜精品久久久久久久白皮肤| 欧美日韩性生活视频| 92国产精品久久久久首页| 色先锋久久影院av| 91久久精品久久国产性色也91| 亚洲精品综合精品自拍| 欧美性生交xxxxxdddd| 在线观看中文字幕亚洲| 日韩精品在线影院| 欧美成人免费播放| 亚洲精品视频二区| 欧美性猛交丰臀xxxxx网站| 久99久在线视频| 亚洲精品国产精品国自产观看浪潮| 国产精品成人一区二区三区吃奶| 久久亚洲精品国产亚洲老地址| 久久久久久久久久久网站| 欧美成人免费在线视频| 国内成人精品一区| 国产婷婷色综合av蜜臀av| 91精品在线国产| 国产日本欧美在线观看| 亚洲欧洲国产精品| 亚洲第一区在线| 亚洲一级黄色片| 国产精品9999| 亚洲一区二区久久久久久久| 欧美尤物巨大精品爽| 97国产一区二区精品久久呦| 久久99久久99精品免观看粉嫩| 这里只有精品久久| 91情侣偷在线精品国产| 国产精品∨欧美精品v日韩精品| 欧美成人合集magnet| 亚洲女人天堂色在线7777| 国产一区二区三区高清在线观看| 高清亚洲成在人网站天堂| 亚洲午夜精品久久久久久久久久久久|