我不知道AngularJS框架中是否存在这种情况,但实质上我正在寻找与ng-cloak相反的东西,它隐藏元素直到编译页面。我正在寻找一种方法来显示全屏加载消息,直到页面编译。语言中是否有内容可以解决这个问题?
答案 0 :(得分:37)
我已经使用如下的有点hacky方法解决了这个问题。主页末尾添加了以下HTML。
<div ng-show="::false" style="position: fixed; height: 100%; width: 100%; background-color: #353535; top: 0; left: 0; z-index: 10000;">
<div style="display: table; margin: 0 auto; font-size: 26px; color: #CCC;">
Loading
</div>
</div>
在整个浏览器中显示消息,直到页面被编译,此时ng-show接管并隐藏加载消息。
修改强>
Angular 1.3+允许您使用::
表达式来防止在每个摘要周期中评估表达式。
https://docs.angularjs.org/guide/expression#one-time-binding
答案 1 :(得分:22)
<div ng-show>Loading Results...</div>
没有指定属性的 ng-show
会编译为false
答案 2 :(得分:4)
您可以使用css归档此行为。
创建一个类:
.splash {
display: none;
}
[ng-cloak].splash {
display: block !important;
}
然后添加:
<div class="splash" ng-cloak> Loading... </div>
这将在Angular代码加载之前显示,并在角度代码完成后隐藏。不要忘记用ng-cloak包装你的角度代码。
<div ng-cloak> Your code... </div>
答案 3 :(得分:0)
这对我有帮助:
<块引用>https://codepen.io/garethdweaver/pen/PqKLyB
它可以在没有 &:after 的情况下使用,但这里很好地展示了这个想法,我基于此做出的决定如下:
[TestMethod]
public void Test()
{
var array = new int[] {1, 2, 3, 4, 5, 6};
var grouping = array.GroupBy(x => x % 2);
IsGrouping(grouping)
.Should()
.BeTrue();
IsGrouping(array)
.Should()
.BeFalse();
}
private bool IsGrouping(IEnumerable someEnumerable)
{
return someEnumerable
.GetType()
.GetInterfaces()
.Any(x => x.IsGenericType
&& typeof(IEnumerable<>) == x.GetGenericTypeDefinition()
&& x.GenericTypeArguments.Length == 1
&& x.GenericTypeArguments.First().IsGenericType
&& x.GenericTypeArguments.First().GetGenericTypeDefinition() == typeof(IGrouping<,>)
);
}