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

解决AngularJS初始化闪现问题

发布时间:2020-12-17 09:14:03 所属栏目:安全 来源:网络整理
导读:问题 使用ng-hide隐藏的弹框,在页面初始化、刷新的时候会闪现一次,然后才会hide。 原因 AngularJS需要在DOM加载完和javascript加载完后才会AngularJS的触发绑定和渲染工作。也就是说, 因为在加载angularjs之前会先渲染dom结构和js,而模态框涉及到了dom操

问题

使用ng-hide隐藏的弹框,在页面初始化、刷新的时候会闪现一次,然后才会hide。

原因

AngularJS需要在DOM加载完和javascript加载完后才会AngularJS的触发绑定和渲染工作。也就是说,

因为在加载angularjs之前会先渲染dom结构和js,而模态框涉及到了dom操作,所以会在angularjs还没加载完,dom已经加载完成后,出现。等angularjs加载完成了就会执行ng-hide,消失。这样就出现了闪现。

解决方法

1.ng-bind

ng-bind是angular里面另一个内置的用于操作绑定页面数据的指令。我们可以使用ng-bind渲染的空元素代替{{ }}的形式绑定元素到页面上;

这个常会用在绑定变量的时候。

2.ng-cloak

该指令是angularjs的内置的指令,它的作用是隐藏所有被它包含的元素。我们可以使用ng-clock属性或设置ng-cloak样式来防止闪现问题。

其工作原理是:

ng-clock会在html页面上的head中添加这个样式,使得没渲染的div隐藏。

<style type="text/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,0);-ms-zoom:1.0001;}.ng-animate-active{clip:rect(-1px,0);-ms-zoom:1;} </style>


3.resolve

当在不同的页面之间使用routes(路由)的时候,我们有另外的方式防止页面在数据被完全加载到route之前被渲染。

在route(路由)里使用resolve可以让我们在route(路由)被完全加载之前获取我们需要加载的数据。当数据被加载成功之后,路由就会改变而页面也会呈现给用户;数据没有被加载成功route就不会改变, the $routeChangeError event will get fired.【$routeChangeError事件就(不)会被激活?】

resolve详细介绍 看着比较复杂没仔细看

4.上边方法都解决不了

然而这两个方案都不理想。那么

方案:在样式表中增加一个ng-cloak的css代码,内容同AngularJS动态创建的一致,在head中静态加载

如果上边的方案还是解决不了复杂的界面,比方像我的弹框列表。那么

可以用angular操作dom来添加class,一开始是display:none,点击后可以是display:block


$scope.modalAssChange = function(vultop){
     if(vultop){
          $scope.vulAssList = vultop.assetData;
          angular.element(document.getElementById("vulAsslist")).removeClass('hideModal').addClass('showModal');
      }else{
          angular.element(document.getElementById("vulAsslist")).removeClass('showModal').addClass('hideModal');
      }
}

这就涉及到了angularjs的dom操作angular.element()的详细介绍

(编辑:李大同)

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

    推荐文章
      热点阅读