IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Ng-cloak解决angularJS中的闪烁

    陈华发表于 2015-05-11 06:45:48
    love 0

    在用angularJS框架开发中,页面加载时会看到有表达式{{express}}或者过滤器{{express | filter}}在页面中闪过。这个问题是由于javascript操作DOM的时候,是等DOM结构都加载完成,才回头处理引用的angularJS文件。这是引起表达式或过滤器在页面闪烁的原因。

    如何解决因加载顺序引起的闪烁呢?angularJS为我们提供了ng-cloak,我们可以在需要的地方加上ng-cloak。如:

    1
    2
    3
    <body screen_capture_injected=“true”ng-controller=“adminAppCtrl”ng-cloak>  ……</div>
    <ul ng-cloak>……</ul>

    Ng-cloak实现原理为一个directive,页面初始化是在DOM的heade增加一行CSS代码,如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <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掉,这样就防止了节点的闪烁。如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15


沪ICP备19023445号-2号
友情链接