如果我们使用ng-cloak
,但是angular脚本加载很慢,或者如果用户关闭了JavaScript,那么用户不会仍然看到{{ a + b }}
或任何我们想要隐藏的东西吗?
这是不是一个很好的做法,如果我们添加
<style>
[ng-cloak] { display: none !important }
</style>
添加到HTML文件的标题部分?或者,如果我们正在使用AngularJS并且互联网连接可能很慢,或者如果用户关闭了JavaScript,是否会有其他适合添加的CSS样式?
发布于 2016-01-27 13:20:59
如果您在页面的head部分加载angular.js,那么您不应该自己添加任何css来使ng-cloak正常工作。Angular会在加载时自行添加这些样式,因为这发生在head部分,所以在浏览器评估页面正文并呈现任何内容之前会应用这些样式。
但是,如果您使用脚本加载器异步加载angular,那么您确实需要手动添加样式(最好是在页面头部加载的样式表或样式块中)。
从docs
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
display: none !important;
}
发布于 2016-01-27 12:41:32
ng-cloak
与其他指令略有不同,因为它唯一的工作就是删除自身。Angular不会对该属性应用任何特殊样式。它只是移除了它。
这意味着,例如,您可以应用样式来使卸载的角度元素具有背景色,而不是不可见。我不知道您为什么要这样做,但这是需要记住的--这只是一个无聊的旧属性,直到Angular将其删除。
加载CSS文件的行为由浏览器决定,因此在头部放置一个style标记可能是公平的,但这就像任何其他CSS资源一样--您很少希望加载没有样式的元素,而浏览器很擅长避免这种情况。但你肯定需要它在某个地方。
如果禁用了JavaScript,或者在角度加载之前,它就像任何其他属性一样:
[ng-cloak]{
display: none
}
<div ng-cloak>
Where am I?
</div>
但一旦角度加载(无论设置需要多长时间,这里用一秒计时器模拟):
window.setTimeout(function() {
$("[ng-cloak]").removeAttr("ng-cloak");
}, 1000);
[ng-cloak] {
display: none
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div ng-cloak>
Here I am!
</div>
https://stackoverflow.com/questions/35028857
复制相似问题