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

hel*_*456 33 javascript angularjs

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

hel*_*456 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>
Run Code Online (Sandbox Code Playgroud)

消息将在整个浏览器中显示,直到编译页面为止,此时ng-show接管并隐藏加载消息.

编辑: Angular 1.3+允许您使用::表达式来防止在每个摘要周期中评估表达式. https://docs.angularjs.org/guide/expression#one-time-binding

  • 我想你可以删除你的简单引号,只需设置:`ng-show ="false"`.顺便说一下,这对我来说并不那么惹人讨厌. (6认同)
  • 仅供参考``variable`语法通常称为一次性绑定 (3认同)
  • 这个答案是完美的,因为它表明了对Angular如何运作的理解."ng-cloak"说"应用css样式(加载很快),直到Angular有机会击中控件并移除样式,显示控件".你的方法说"在屏幕上显示一些东西,直到Angular有机会击中控件并隐藏它" (2认同)

Cod*_*rer 22

<div ng-show>Loading Results...</div>
Run Code Online (Sandbox Code Playgroud)

ng-show 没有指定属性编译 false

  • `ng-if`比`ng-show`更有意义 - 将它留在DOM中没有任何好处 (6认同)
  • 我喜欢ng-show =":: false".它更具可读性(你为什么要把ng-show用于你想要隐藏的东西?)它还包括一次性绑定,这似乎更有效. (5认同)
  • 非常有趣的答案.为了便于阅读,我仍然倾向于明确指定="'false'",但这是个人偏好的问题. (3认同)

rcr*_*ruz 6

您可以使用 css 来存档此行为。

创建一个类:

.splash {
  display: none;
}

[ng-cloak].splash {
  display: block !important;
}
Run Code Online (Sandbox Code Playgroud)

然后添加:

<div class="splash" ng-cloak> Loading... </div>
Run Code Online (Sandbox Code Playgroud)

这将在 Angular 代码加载之前显示,并在 Angular 代码完成后隐藏。不要忘记用 ng-cloak 包装你的 angular 代码。

<div ng-cloak> Your code... </div>
Run Code Online (Sandbox Code Playgroud)