angluarjs中頁面初始化的時候會出現文法{{}}在頁面中問題

來源:互聯網
上載者:User

標籤:cal   head   rect   exp   pre   www   import   ref   color   

angluarjs中頁面初始化的時候會出現文法{{}}在頁面中問題,也即是頁面閃爍問題。
出現這個的原因是:由於頁面或者組件需要渲染載入資料,瀏覽器和angluarjs渲染頁面需要消耗一定的時間,雖然這個時間很多,可能肉眼看不出來,但有的時候載入時間比較長的時候,特別是網路等原因。這樣就看到了在渲染前的帶有文法的頁面。
解決的辦法如下:

1.ng-cloak

ng-cloak指令是angular的內建指令,它的作用是隱藏所有被它包含的元素:

<div ng-cloak> <h1>Hello {{ name }}</h1></div>

Ng-cloak實現原理為一個directive,頁面初始化是在DOMhead增加一行CSS代碼,如下:

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

ng-bind是angular裡面另一個內建的用於操作綁定頁面資料的指令。我們可以使用ng-bind代替{{ }}的形式繫結元素到頁面上;

使用ng-bind替代{{ }}可以防止未被渲染的{{ }}就展示給使用者了,使用ng-bind渲染的空元素替代{{ }}會顯得友好很多。

上面的例子可以重寫成下面那樣,這樣就可以防止頁面出現{{ }}了

<div> <h1>Hello <span ng-bind="name"></span></h1></div>

參考地址:http://www.jb51.net/article/8...

angluarjs中頁面初始化的時候會出現文法{{}}在頁面中問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.