欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

AngularJS使用ng-Cloak阻止初始化閃爍問題的方法

 更新時間:2016年11月03日 10:16:22   作者:破狼  
這篇文章主要介紹了AngularJS使用ng-Cloak阻止初始化閃爍問題的方法,結(jié)合實(shí)例形式分析了AngularJS使用ng-Cloak來解決初始化時出現(xiàn)閃爍問題的相關(guān)技巧,需要的朋友可以參考下

本文實(shí)例講述了AngularJS使用ng-Cloak阻止初始化閃爍問題的方法。分享給大家供大家參考,具體如下:

在做angular的SPA開發(fā)時,我們經(jīng)常會遇見在如Chrome這類能夠快速解析的瀏覽器上出現(xiàn)表達(dá)式({% raw %} {{ express }} {% endraw %} ),或者是模塊(div)的閃爍。對于這個問題由于JavaScript去操作DOM,都會等待DOM加載完成(DOM ready)。對于angular會在DOM ready完會才回去解析html view Template,所以對于Chrome這類快速的瀏覽器你會看見有閃爍的情況出現(xiàn)。而對于IE7,8這類解析稍慢的瀏覽器大部分情況下是不會出現(xiàn)這個問題的。

angular中為我們提供了ng-cloak來實(shí)現(xiàn)防止閃爍的方案,我們只需要在需要的地方加上ng-cloak。同時對于bing文字({% raw %}{{ express }} {% endraw %})我們也可以改為ng-bind來實(shí)現(xiàn)避免。

<div id="template1" ng-cloak>{{ 'hello' }}</div>
<div id="template2" ng-cloak class="ng-cloak">{% raw %} {{ 'hello IE7' }} {% endraw %} </div>
<div id="template2" ng-bing="'hello IE7'"></div>

angular將ng-cloak實(shí)現(xiàn)為一個directive,并會在初始化的時候在DOM的heade增加一行css代碼,如下:

復(fù)制代碼 代碼如下:
@charset "UTF-8";[ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\:form{display:block;}.ng-animate-start{clip:rect(0,auto,auto,0);-ms-zoom:1.0001;}.ng-animate-active{clip:rect(-1px,auto,auto,0);-ms-zoom:1;}

從上面我們可以看見angular將帶有ng-clock的的元素設(shè)置為display:none,隱藏掉,在等到angular解析到帶有ng-clock的節(jié)點(diǎn)時候,會把a(bǔ)ttribute和class同時remove掉,這樣就可以實(shí)現(xiàn)防止節(jié)點(diǎn)的閃爍。

var ngCloakDirective = ngDirective({
   compile: function(element, attr) {
    attr.$set('ngCloak', undefined);
    element.removeClass('ng-cloak');
   }
});

在angular-bootstrap.js中會看見這樣的代碼去增加前面所說的css:

復(fù)制代碼 代碼如下:
document.write('<link rel="stylesheet" type="text/css" href="' + serverPath + '../css/angular.css"/>');

好像閃爍的問題好像已經(jīng)能夠被我解決了,恩是否是這樣的,理論也改如此,但是現(xiàn)實(shí)是殘酷的,我們的感性認(rèn)識經(jīng)常會被現(xiàn)實(shí)一記重重的耳光,我們才能很更深入全面的思考,如果瀏覽器的速度比angular在head中加入css的速度還快呢?我在給公司的一個項(xiàng)目組解決這個閃爍的問題的時候就遇見了這個問題。怎么辦呢?那我們只能使出我們必殺技,自己把css加入我們的css文件引入heade,啟動加載,ok這樣就可以完美解決了。(如果你也遇見了加了ng-cloak還不起作用的話,那么試試直接引入css文件吧)

到這里關(guān)于ng-cloak的原理和解決方案已經(jīng)完成。

希望本文所述對大家AngularJS程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • AngularJS 工作原理詳解

    AngularJS 工作原理詳解

    本文主要介紹AngularJS 工作原理,這里整理了相關(guān)資料及示例代碼,有興趣的小伙伴可以參考下
    2016-08-08
  • AngularJS入門教程之?dāng)?shù)據(jù)綁定原理詳解

    AngularJS入門教程之?dāng)?shù)據(jù)綁定原理詳解

    這篇文章主要介紹了AngularJS數(shù)據(jù)綁定原理,較為詳細(xì)的分析了AngularJS數(shù)據(jù)綁定的原理、使用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-11-11
  • angularJS 中$scope方法使用指南

    angularJS 中$scope方法使用指南

    這篇文章主要介紹了angularJS 中$scope方法使用指南,需要的朋友可以參考下
    2015-02-02
  • AngularJS入門教程一:路由用法初探

    AngularJS入門教程一:路由用法初探

    這篇文章主要介紹了AngularJS路由用法,簡單分析了AngularJS路由的概念、功能及基本使用方法,需要的朋友可以參考下
    2017-05-05
  • 詳解Angular之路由基礎(chǔ)

    詳解Angular之路由基礎(chǔ)

    單頁應(yīng)用中,組件時構(gòu)建應(yīng)用的基礎(chǔ)元素,頁面展示什么內(nèi)容均是靠頁面有什么組件決定的,而展示什么組件又是由一組路由(帶有Url元素的特定集合,可用于導(dǎo)航視圖)決定的,希望本文可以幫助讀者了解路由的基礎(chǔ)概念和基礎(chǔ)使用、寫法。
    2021-05-05
  • angularjs $http實(shí)現(xiàn)form表單提交示例

    angularjs $http實(shí)現(xiàn)form表單提交示例

    這篇文章主要介紹了angularjs $http實(shí)現(xiàn)form表單提交示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-06-06
  • AngularJS之ionic 框架下實(shí)現(xiàn) Localstorage本地存儲

    AngularJS之ionic 框架下實(shí)現(xiàn) Localstorage本地存儲

    這篇文章主要介紹了AngularJS之ionic 框架下實(shí)現(xiàn) Localstorage本地存儲,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 深入理解AngularJS中的ng-bind-html指令和$sce服務(wù)

    深入理解AngularJS中的ng-bind-html指令和$sce服務(wù)

    這篇文章給大家詳細(xì)介紹了AngularJS中的ng-bind-html指令和$sce服務(wù),對大家學(xué)習(xí)AngularJS具有一定參考借鑒價(jià)值,有需要都可以參考學(xué)習(xí)。
    2016-09-09
  • 詳解AngularJS中的http攔截

    詳解AngularJS中的http攔截

    這篇文章主要為大家詳細(xì)介紹了AngularJS中的http攔截,$http服務(wù)允許我們與服務(wù)端交互,有時候我們希望在發(fā)出請求之前以及收到響應(yīng)之后做些事情。即http攔截,需要的朋友可以參考下
    2016-02-02
  • 詳解Angular2學(xué)習(xí)筆記之Html屬性綁定

    詳解Angular2學(xué)習(xí)筆記之Html屬性綁定

    本篇文章主要介紹了詳解Angular2學(xué)習(xí)筆記之Html屬性綁定,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01

最新評論