首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angularjs -ng-cloak/ng-显示元素闪烁

Angularjs -ng-cloak/ng-显示元素闪烁
EN

Stack Overflow用户
提问于 2012-06-29 01:19:12
回答 29查看 183.7K关注 0票数 231

我在使用指令/类ng-cloakng-show的angular.js中遇到了问题。

Chrome浏览器运行良好,但火狐浏览器会导致ng-cloakng-show元素闪烁。是不是因为把ng-cloak/ng-show转换成style="display: none;"导致的,可能是火狐javascript编译器速度慢了一点,所以这些元素会显示一段时间,然后隐藏起来?

示例:

代码语言:javascript
复制
<ul ng-show="foo != null" ng-cloak>..</ul>
EN

回答 29

Stack Overflow用户

回答已采纳

发布于 2012-11-08 02:52:01

尽管文档中没有提到,但将display: none;规则添加到您的CSS中可能还不够。如果要在正文中加载angular.js,或者模板编译得不够快,请使用ng-cloak指令在CSS中包含以下内容:

代码语言:javascript
复制
/* 
  Allow angular.js to be loaded in body, hiding cloaked elements until 
  templates compile.  The !important is important given that there may be 
  other selectors that are more specific or come later and might alter display.  
 */
[ng\:cloak], [ng-cloak], .ng-cloak {
  display: none !important;
}

正如评论中提到的,!important很重要。例如,如果您有以下标记

代码语言:javascript
复制
<ul class="nav">
  <li><a href="/foo" ng-cloak>{{bar}}</a></li>
</ul>

如果您碰巧使用的是bootstrap.css,下面的选择器更适合您的ng-cloak'ed元素

代码语言:javascript
复制
.nav > li > a {
  display: block;
}

因此,如果您使用简单的display: none;包含一个规则,Bootstrap的规则将优先,并且display将被设置为block,因此您将在模板编译之前看到闪烁。

票数 386
EN

Stack Overflow用户

发布于 2012-06-29 16:59:34

作为mentioned in the documentation,您应该根据ng-cloak属性向您的CSS添加一个规则来隐藏它:

代码语言:javascript
复制
[ng\:cloak], [ng-cloak], .ng-cloak {
    display: none;
}

我们在"Built with Angular“网站上使用了类似的技巧,你可以在Github上查看其源代码:https://github.com/angular/builtwith.angularjs.org

希望这能有所帮助!

票数 47
EN

Stack Overflow用户

发布于 2013-03-02 04:59:10

确保AngularJS包含在HTML的head中。请参阅ngCloak doc

为获得最佳结果,angular.js脚本必须加载到html文件的head部分;或者,css规则(上面)必须包含在应用程序的外部样式表中。

票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11249768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档