即使在AngularJS中使用ng-cloak,页脚模板也会闪烁

Dei*_*zan 10 javascript twitter-bootstrap angularjs

我是成功创建和显示模板,其中一些数据使用AngularJS从REST服务检索但是,当JSON响应仍在加载时,浏览器在顶部显示页脚模板,当响应返回JSON数据时,页脚会移到底部.

这种情况发生得非常快,但是在页面顶部闪烁之前,页脚模板会闪烁到底部.

不幸的是,我尝试过使用ng-cloak方法,问题仍然存在.我把CSS放到ng-cloak中,就像API Reference推荐的那样.

这是我的应用代码:

<body>
  <div data-ng-controller="HeaderCtrl" data-ng-include="'app/partials/header.html'"></div>
  <div data-ng-controller="MenuCtrl" data-ng-include="'app/partials/lista-menu.html'"></div>
  <div ng-view="main" ></div>
  <footer class="nav" data-ng-include="'app/partials/footer.html'" ></footer>
Run Code Online (Sandbox Code Playgroud)

我尝试将ng-cloak放在body标签,ng-view,footer以及ng-view html模板中.此代码代表所有尝试(注意:我尝试单独使用,并使用ng-cloak类而不是)

<body ng-cloak class="ng-cloak">
  <div data-ng-controller="HeaderCtrl" data-ng-include="'app/partials/header.html'"></div>
  <div data-ng-controller="MenuCtrl" data-ng-include="'app/partials/lista-menu.html'"></div>
  <div ng-view="main" ng-cloak class="ng-cloak"></div>
  <footer class="nav" data-ng-include="'app/partials/footer.html'" ng-cloak class="ng-cloak"></footer>
Run Code Online (Sandbox Code Playgroud)

不幸的是,在所有这些更改之后,页脚模板在加载完成之前仍然在顶部闪烁.

有人可以帮我解决这个问题吗?

是否有任何Bootstrap技巧将页脚放在底部,即使主div没有高度?我尝试过使用nav-fixed-bottom标签,但是当页面的高度值很高时,我不想让底部固定在屏幕上.

谢谢!!!

Ale*_*orn 9

您是否仔细检查了是否有任何可能与ng-cloak规则冲突的CSS规则?其他样式,库等可能会发生这种情况.

如果您有任何冲突规则,只需添加display:none;可能还不够.

请参阅Angularjs - ng-cloak/ng-show元素闪烁

如果是这种情况,解决方案是使用!important来克服这个问题:

[ng\:cloak], [ng-cloak], .ng-cloak {
    display: none !important;
}
Run Code Online (Sandbox Code Playgroud)

  • 嗯是的,这是有道理的.另一种尝试的方法 - 而不是ng-cloak,使用ng-show,但是只在主要内容已加载/请求完成时设置的范围变量等 - 所以你在页脚出现时手动设置. (5认同)

Mar*_*cok 4

ng-cloak 和/或ng-bind无法帮助解决这个问题,因为这不是“未编译内容的闪存”问题。这些指令旨在隐藏内容,直到 Angular 有机会编译 HTML。

您试图解决的问题更像是:“我动态地向页面添加内容,并且内容正在移动”。如果您只想在加载主要内容后才显示页脚,我喜欢@Alex 在他的评论中提出的解决方案。