首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于AngularJS,如果我们使用ngCloak,我们不应该添加一个样式到我们的HTML文件来隐藏元素吗?

对于AngularJS,如果我们使用ngCloak,我们不应该添加一个样式到我们的HTML文件来隐藏元素吗?
EN

Stack Overflow用户
提问于 2016-01-27 12:23:11
回答 2查看 141关注 0票数 0

如果我们使用ng-cloak,但是angular脚本加载很慢,或者如果用户关闭了JavaScript,那么用户不会仍然看到{{ a + b }}或任何我们想要隐藏的东西吗?

这是不是一个很好的做法,如果我们添加

代码语言:javascript
运行
复制
<style>
    [ng-cloak] { display: none !important }
</style>

添加到HTML文件的标题部分?或者,如果我们正在使用AngularJS并且互联网连接可能很慢,或者如果用户关闭了JavaScript,是否会有其他适合添加的CSS样式?

EN

回答 2

Stack Overflow用户

发布于 2016-01-27 13:20:59

如果您在页面的head部分加载angular.js,那么您不应该自己添加任何css来使ng-cloak正常工作。Angular会在加载时自行添加这些样式,因为这发生在head部分,所以在浏览器评估页面正文并呈现任何内容之前会应用这些样式。

但是,如果您使用脚本加载器异步加载angular,那么您确实需要手动添加样式(最好是在页面头部加载的样式表或样式块中)。

docs

代码语言:javascript
运行
复制
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
  display: none !important;
}
票数 1
EN

Stack Overflow用户

发布于 2016-01-27 12:41:32

ng-cloak与其他指令略有不同,因为它唯一的工作就是删除自身。Angular不会对该属性应用任何特殊样式。它只是移除了它。

这意味着,例如,您可以应用样式来使卸载的角度元素具有背景色,而不是不可见。我不知道您为什么要这样做,但这是需要记住的--这只是一个无聊的旧属性,直到Angular将其删除。

加载CSS文件的行为由浏览器决定,因此在头部放置一个style标记可能是公平的,但这就像任何其他CSS资源一样--您很少希望加载没有样式的元素,而浏览器很擅长避免这种情况。但你肯定需要它在某个地方。

如果禁用了JavaScript,或者在角度加载之前,它就像任何其他属性一样:

代码语言:javascript
运行
复制
[ng-cloak]{
  display: none
}
代码语言:javascript
运行
复制
<div ng-cloak>
  Where am I?
</div>

但一旦角度加载(无论设置需要多长时间,这里用一秒计时器模拟):

代码语言:javascript
运行
复制
window.setTimeout(function() {
  $("[ng-cloak]").removeAttr("ng-cloak");
}, 1000);
代码语言:javascript
运行
复制
[ng-cloak] {
  display: none
}
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div ng-cloak>
  Here I am!
</div>

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

https://stackoverflow.com/questions/35028857

复制
相关文章

相似问题

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