国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

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

2019-11-20 08:36:16
字體:
來源:轉載
供稿:網友

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

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

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

<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實現為一個directive,并會在初始化的時候在DOM的heade增加一行css代碼,如下:

復制代碼 代碼如下:
@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的的元素設置為display:none,隱藏掉,在等到angular解析到帶有ng-clock的節點時候,會把attribute和class同時remove掉,這樣就可以實現防止節點的閃爍。

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

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

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

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

到這里關于ng-cloak的原理和解決方案已經完成。

希望本文所述對大家AngularJS程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仁化县| 清苑县| 长海县| 平邑县| 琼结县| 峡江县| 西丰县| 桓台县| 鄂托克前旗| 万州区| 新平| 文化| 剑川县| 平泉县| 奉化市| 嵊泗县| 丹东市| 清苑县| 那坡县| 肥西县| 延川县| 永善县| 内丘县| 合山市| 铜川市| 芜湖县| 固始县| 浦城县| 韶山市| 台东市| 抚顺县| 莎车县| 文山县| 荣成市| 界首市| 宜兰市| 昂仁县| 措勤县| 若尔盖县| 浦县| 宣化县|