国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

angular之$apply嘗試

yzd / 2152人閱讀

摘要:目前處于展開狀態(tài),再次點擊按鈕,下拉隱藏。思路解析外層設置一個狀態(tài)值,通過添加控制下拉是否顯示。設想都是美好的,也通過測試這樣沒有問題。設置初始狀態(tài)為不顯示顯示關(guān)閉浮層點擊任一下拉選擇,隱藏。

angular開發(fā)過程中遇到的$apply問題

由于一直在項目上并嗎使用過angular進行開發(fā),目前會遇到一些比較弱智的問題,所以每次遇到耗時較多的問題都總結(jié)一下。

$apply問題

接到一個類似于dropdown這樣的需求,點擊按鈕下拉選擇展示,而它的關(guān)閉有3中場景。

目前處于展開狀態(tài),再次點擊按鈕,下拉隱藏。

點擊里面的任一條件,下拉隱藏。

點擊空白處,下拉隱藏。

相信這樣的使用場景一定不陌生,因為他經(jīng)常出現(xiàn)。

一開始的時候想象了一下jquery多么美好,實現(xiàn)起來多么簡單,其實angular也很容易。

思路解析:

外層設置一個狀態(tài)值,通過添加ngClass控制下拉是否顯示。設想都是美好的,也通過測試這樣沒有問題。

實現(xiàn)過程:

1.html書寫

cilic me!
  • {{item.title}}

2.css代碼控制

.content .list{
    display: block;
}  
.content.open .list{
    display: block;
}  

3.mock靜態(tài)數(shù)據(jù)

vm.list = [
    {title: "下拉選項1"},
    {title: "下拉選項2"},
    {title: "下拉選項3"},
    {title: "下拉選項4"},
    {title: "下拉選項5"}
];

4.點擊按鈕控制顯示隱藏,我只需要控制open狀態(tài)為true或false即可。

// 設置初始狀態(tài)為不顯示
vm.open = false;
// 顯示,關(guān)閉浮層
vm.toggle = function() {
    vm.open = !vm.open;
};  

5.點擊任一下拉選擇,隱藏。

vm.itemClick = function() {
    vm.ticketOpen = false;
};

6.點擊空白處,隱藏。

$document.off("click").on("click", function() {
    vm.open = false;
});

看到這樣的代碼,你覺得有問題嗎?反正我當時覺得自己一定是對的,但調(diào)試結(jié)果就是不生效,下拉怎么都不會隱藏。
通過斷點調(diào)試,頁面輸出open的值,發(fā)現(xiàn)js中的open確實已經(jīng)發(fā)生改變,但是頁面的值確沒有改變,然后聯(lián)想到雙向數(shù)據(jù)綁定失效。

誰決定什么事件進入angular context,而哪些又不進入呢?$apply!

這里聲明一點ng-click不需要多帶帶去做處理是因為angular已經(jīng)做了,因此點擊帶有ng-click的元素時,事件就會被封裝到一個$apply調(diào)用。

所以上面的問題也顯而易見,是因為沒有調(diào)用$apply,事件沒有進入angular context, $digest循環(huán)永遠沒有執(zhí)行。
so將code修為:

$document.off("click").on("click", function() {
    vm.open = false;
    $scope.$apply();
});

這樣一測,立馬有用了。
$apply是$scope的一個函數(shù),調(diào)用它會強制一次$digest循環(huán).
然后看到網(wǎng)上有人說有種更好用的辦法,嘗試了一下確實有效:

$document.off("click").on("click", function() {
    $scope.$apply(function () {
        vm.open = false;
    });
});

解釋為:

What’s the difference?
The difference is that in the first version, we are updating the values outside the angular context so if that throws an error, Angular will never know.
Obviously in this tiny toy example it won’t make much difference,
but imagine that we have an alert box to show errors to our users and we have a 3rd party library that does a network call and it fails.
If we don’t wrap it inside an $apply, Angular will never know about the failure and the alert box won’t be there.

參考文章地址: http://angular-tips.com/blog/...

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/79924.html

相關(guān)文章

  • Angular1.x中ngModel的$render的詳解

    摘要:我們下面來看看的源碼這是其中一個,在不同的指令下的代碼都不太一樣,但是其作用基本一致,但是從這里我們就可以看出的到底在干什么事了。 這篇文章是我兩年前在博客園寫的,現(xiàn)在移植過來,不過Angular 1.x 在國內(nèi)用的人已經(jīng)不多了,希望能幫助到有需要的人 在我開始著手 ngModel 的領(lǐng)域時候,有一個問題很令我糾結(jié),那就是 $render 到底是做什么的呢?查了很多資料都只是簡單的描述...

    Euphoria 評論0 收藏0
  • Angular 8 中,我們可以期待些什么

    摘要:在理想的情況下,我們甚至可以立即將應用程序升級到。于是,在中,我們可以得到些什么正如我們所看到的,的新增特性除之外并不是很亮眼,盡管這些特性非常好用,但對于大多數(shù)應用程序來說并不重要。 轉(zhuǎn)載請注明出處:葡萄城官網(wǎng),葡萄城為開發(fā)者提供專業(yè)的開發(fā)工具、解決方案和服務,賦能開發(fā)者。 本文由葡萄城翻譯并發(fā)布 showImg(https://segmentfault.com/img/bVbrk...

    LiveVideoStack 評論0 收藏0
  • angular性能優(yōu)化心得

    摘要:本文針對的讀者具備性能優(yōu)化的相關(guān)知識雅虎條性能優(yōu)化原則高性能網(wǎng)站建設指南等擁有實戰(zhàn)經(jīng)驗。這種機制能減少瀏覽器次數(shù),從而提高性能。僅會檢查該和它的子,當你確定當前操作僅影響它們時,用可以稍微提升性能。 搬運自: http://atian25.github.io/2014/05/09/angular-performace/ 不知不覺,在項目中用angular已經(jīng)半年多了,踩了很多坑...

    guqiu 評論0 收藏0
  • 總結(jié)的AngularJS1版本的一些面試問題

    摘要:綜上所述兩者是出于不同的目的被創(chuàng)建的,解決的也是不同的問題。檢測模型變化的過程稱為循環(huán)。由指令注冊的事件處理函數(shù)執(zhí)行。該回調(diào)函數(shù)會更新插值表達式所在的屬性。模塊主要關(guān)系腳本加載問題。 AngularJS面試題 1.與jQuery的比較 jQuery js函數(shù)庫 封裝簡化dom操作 使用jquery的思想是:我擁有一個DOM元素并且想讓它去做某件事。也就是命令式編程思想。 angula...

    defcon 評論0 收藏0
  • AngularJS學習筆記(1) --- 執(zhí)行過程

    摘要:前言由于在博客系統(tǒng)的開發(fā)中和近期工作中的前端框架主要使用因此在這里記錄學習和使用的過程中遇到的一些需要記錄的點。執(zhí)行過程弄清楚的執(zhí)行過程是很重要的,這樣你才能在正確的時機做正確的事。至此,的執(zhí)行過程也就告一段落了。 前言 由于在博客系統(tǒng)的開發(fā)中和近期工作中的前端框架主要使用 AngularJS ,因此在這里記錄學習和使用 AngularJS 的過程中遇到的一些需要記錄的點。特別說明,本...

    taohonghui 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<