加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angluarjs中页面初始化的时候会出现语法{{}}在页面中问题

发布时间:2020-12-17 09:40:27 所属栏目:安全 来源:网络整理
导读:angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。 出现这个的原因是:由于页面或者组件需要渲染加载数据,浏览器和angluarjs渲染页面需要消耗一定的时间,虽然这个时间很多,可能肉眼看不出来,但有的时候加载时间比较长的时候

angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。
出现这个的原因是:由于页面或者组件需要渲染加载数据,浏览器和angluarjs渲染页面需要消耗一定的时间,虽然这个时间很多,可能肉眼看不出来,但有的时候加载时间比较长的时候,特别是网络等原因。这样就看到了在渲染前的带有语法的页面。
解决的办法如下:

1.ng-cloak

ng-cloak指令是angular的内置指令,它的作用是隐藏所有被它包含的元素:

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

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>
    <pre class= “prettyprint linenums”>
      [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.aspzz.cn/article/8...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读