用于加载消息的ng-cloak相反

时间:2014-02-26 20:20:05

标签: javascript angularjs

我不知道AngularJS框架中是否存在这种情况,但实质上我正在寻找与ng-cloak相反的东西,它隐藏元素直到编译页面。我正在寻找一种方法来显示全屏加载消息,直到页面编译。语言中是否有内容可以解决这个问题?

4 个答案:

答案 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<,>)
        );
}