Ng-cloak解決angularJS中的閃爍問題

來源:互聯網
上載者:User

在用angularJS架構開發中,頁面載入時會看到有運算式{{express}}或者過濾器{{express | filter}}在頁面中閃過。這個問題是由於javascript操作DOM的時候,是等DOM結構都載入完成,才回頭處理引用的angularJS檔案。這是引起運算式或過濾器在頁面閃爍的原因。

如何解決因載入順序引起的閃爍呢?angularJS為我們提供了ng-cloak,我們可以在需要的地方加上ng-cloak。如:

<body screen_capture_injected="true" ng-controller="adminAppCtrl" ng-cloak>  ……</div>
 
<ul ng-cloak>……</ul>
 
Ng-cloak實現原理為一個directive,頁面初始化是在DOM的heade增加一行CSS代碼,如下:

<pre class= “prettyprint linenums”>
 
      [ng\:cloak],[ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak{
 
        Display:none ! important;
 
}
 
</pre>
 

Angular將帶有ng-cloak的元素設定為display:none.

在等到angular解析到帶有ng-cloak節點的時候,會把元素上ng-cloak  attribute和calss同時remove掉,這樣就防止了節點的閃爍。如下:

<script type =”text/ng-template” id =”scenario.js-150”>
 
      It(‘should remove the template directive and css class’,function(){
 
  Expect(element(‘.doc-example-live #template1’).attr(‘ng-cloak’))
 
       not().toBeDefined();
 
          Expect(element(‘.doc-example-live #template2’).attr(‘ng-cloak’)).
 
Not().toBeDefined();
 
});
 
</script>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.