欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

$apply如何在Angularjs中使用

今天就跟大家聊聊有關(guān)$apply如何在Angularjs中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出涿州免費做網(wǎng)站回饋大家。

一.$apply的作用

$apply()函數(shù)可以從Angular框架的外部讓表達式在Angular上下文內(nèi)部執(zhí)行。

上面是AngularJs權(quán)威教程中的一句話。什么意思呢?

首先,你要清楚,在原生js或者第三方框架下,修改model,是有可能不會觸發(fā)視圖更新的,比如setTimeout、jquery插件。為什么?因為他們脫離了Angularjs的上下文,Angularjs并不能監(jiān)聽到數(shù)據(jù)的改變??蠢印?/p>

1.setTimeout

html:

<p>{{name}}</p>

js:

$scope.name="張三";
setTimeout(function(){
$scope.name = '李四';
//$scope.$apply()
},500)

首先,name等于張三,500ms后,我把他賦值為李四,但是,頁面上并沒有改變,依然是張三。

而,我們把$scope.$apply()放開,就正常了,張三成功變?yōu)槔钏摹?/p>

2.第三方插件

html:

<p>Date: <input type="text" id="datepicker"></p>
<p>
<header>所選日期</header>
{{selectedDate}}
</p>

js:

$scope.selectedDate = '';
$( function() {
 $( "#datepicker" ).datepicker({
 onClose: function( selectedDate ) {
 $scope.selectedDate = selectedDate;
 // $scope.$apply();
 }
 });
} );

這是jquery的datepicker插件,當我們選定日期后,下面的日期應(yīng)該隨之顯現(xiàn),而現(xiàn)在卻沒有。這種情況就必須依靠$apply(),才能更新視圖。

以上兩種情況,都因為不處于Angularjs上下文中,導(dǎo)致監(jiān)聽不到數(shù)據(jù)的變化。而$apply究竟干了什么,才導(dǎo)致數(shù)據(jù)更新正常了呢?

其實$apply相當于一個觸發(fā)器,它的作用就是觸發(fā)digest循環(huán),從而更新視圖。

在digest是Angularjs的核心,是它實現(xiàn)了神奇的數(shù)據(jù)綁定。凡是觸發(fā)事件,必會觸發(fā)digest循環(huán),比如,我們數(shù)值的ng事件,click啊,change,實際上都是觸發(fā)了digest循環(huán)。

所以,我們所做的事,其實就是手動觸發(fā)了digest循環(huán)。關(guān)于digest循環(huán),屬于題外話,這里不做過多介紹,想深入了解的同學,可以看看書籍,或者百度。

二.更好地運用digest循環(huán)

在Angularjs中,除了$apply可以觸發(fā)digest循環(huán)外,還有其他的方法,也可以觸發(fā)此循環(huán)。而且$apply往往時最壞的選擇。下面推薦一些更好的選擇。

1.$digest

$scope.$digest()的速度要比$apply要快,因為它只更新當前作用域和子作用域的值,對于父作用域時不管的。而$apply還要評估父作用域,這就大大消耗了性能。

2.$timeout

用$timeout去代替你的setTimeout,$timeout作為Angularjs的自帶服務(wù),當然時更契合Angularjs環(huán)境啦。它會隱性觸發(fā)digest循環(huán),而且它會延遲執(zhí)行,會在上一個digest循環(huán)完成后的下一刻,觸發(fā)digest循環(huán),這樣就不會出現(xiàn)上文所說的

$digest already in progress

我們把setTime的代碼放到$timeout中

$timeout(function(){
$scope.name = '李四';
},500)

這就能正常工作了,看,沒有討厭的apply了!

3.$evalAsync

最推薦的應(yīng)該時這個方法了。如果當前正好有一個digest循環(huán)在執(zhí)行,那么它就會把導(dǎo)致digest循環(huán)的操作,放到當前digest循環(huán)中去執(zhí)行。而$timeout是要等到當前digest循環(huán)執(zhí)行完,再執(zhí)行一次digest循環(huán)才可以。所以evalAsync執(zhí)行更快,性能更好。我們可以像$timeout那樣去調(diào)用它,即

$scope.$evalAsync(
   function( $scope ) {
   console.log( "$evalAsync" );
   }
  );

看完上述內(nèi)容,你們對$apply如何在Angularjs中使用有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

分享題目:$apply如何在Angularjs中使用
鏈接URL:http://aaarwkj.com/article0/ihhhio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、App設(shè)計Google、品牌網(wǎng)站設(shè)計ChatGPT、靜態(tài)網(wǎng)站

廣告

聲明:本網(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)站優(yōu)化排名
欧美日韩国产综合精品亚洲| 日韩欧美国产综合一区二区| 久久综合亚洲鲁鲁五月天| 日韩亚洲欧美精品另类| 99久久成人国产精品免费| 黄片在线免费在线播放| 日本免费观看一区久久| 人妻有码系列中文字幕专区| 国产成人免费视频大全| 日韩高清精品一区二区| 成人欧美精品一区二区不卡| 久久香蕉国产线看观看亚洲| 国产精品人妻在线av| 丰满少妇被激烈的插进去| 亚洲精品成人在线国产| 日韩国产欧美一区二区在线视频| 一本色桃子精品久久中文字幕| 日韩精品毛片一区到三区| 东京男人的天堂国产av| 亚洲伦理在线一区二区| 人妻激情偷乱视91九色| 少妇人妻系列中文在线| 日韩欧美人妻一二三四区| 四虎永久精品国产毛片| 老熟女露脸吞精一二三四区| 久久久亚洲成人国产av| 亚洲福利区一区二区三区| 厕所偷拍视频一区二区三区| 男人天堂av在线资源| 国产精品一区二区久久毛片| 中文字幕乱码人妻一区二| 亚洲综合色婷婷七月丁香| 日韩黄色大片免费在线观看| 国产精品国产成人免费看| 国产一区二区av免费| 亚洲av色网在线观看| 国产午夜福利视频合集| 激情五月婷婷久久av| 中文字幕日韩手机在线| 亚洲精品成人中文字幕| 国内揄拍国内精品少妇国|