1

我有一个 AngularJS 应用程序,我正在从 REST 服务加载数据。

现在有时会发生的是,{{}}用于从范围访问值的括号被渲染,然后被实际值替换。现在我想做的是在应用程序ng-switch的顶部添加 aDIV并检查全局变量(例如pageLoaded (true|false))是否为 true 或false. 如果是真的,我想加载普通页面,如果是false,我想打印类似“正在加载...”的内容。所以我的问题是,如果所有数据都准备好并被添加到范围中,我如何获得通知(例如通过 Angular 事件)?因为在那之后我想设置pageLoadedtrue.

有没有办法以通用的方式做到这一点?我不喜欢每页实现这个。

提前非常感谢。

问候马克

4

4 回答 4

3

你应该使用ng-cloak它 - http://docs.angularjs.org/api/ng.directive:ngCloak

要显示加载面板,您可以执行以下操作:

<div ng-hide="true">Loading...</div>

所以当角度完成加载时,ng-hide会发生并隐藏加载面板。

于 2013-08-08T07:13:30.573 回答
0

解决方案之一是您可以使用ng-bind而不是使用which在未呈现值时{{}}会显示丑陋。{{}}

<div ng-bind="value">Loading ...</div>
于 2013-08-08T07:27:32.173 回答
0

使用 ng-cloak 来摆脱这类问题。并确保将 ng-cloak 指令应用于页面正文,以便在正确加载数据之前不会显示。并在您的 CSS 文件中使用以下样式。

[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
  display: none;
}

注意:您甚至可以创建一些其他元素或 div,例如弹出窗口或通知栏,显示“请等待数据完全加载”。最初将此 div 设置为 display:none 并在 Ajax 调用中,根据需要将 display 属性更改为 block/inline,最后在成功回调后使其显示:none .. :)

于 2013-08-08T07:22:27.583 回答
0

对于任何与实际问题有关的问题而不是 OP 的特定情况的人:
我有一个片段在通过路由进入的主要部分之后/被加载。

我需要在加载该子部分后运行一个函数,我不想编写新指令并发现你可以使用厚脸皮ngIf

父部分的控制器:

$scope.subIsLoaded = function() { /*do stuff*/; return true; };

子部分的 HTML

<element ng-if="subIsLoaded()"><!-- more html --></element>
于 2015-12-03T00:57:49.343 回答