我是AngularJS的新手,正在尝试找到在加载数据时如何显示等待消息的方法?我的意思是数据开始加载,显示消息,并在数据加载完成时删除它。
我已经在网上找过了,但是还没有找到我需要的东西。
发布于 2013-08-21 21:16:37
<div ng-if="data.dataLoading">
Loading...
</div>
JS
$scope.data.dataLoading = true;
return someService.getData().then(function (results) {
...
}).finally(function () {
$scope.data.dataLoading = false;
});
发布于 2013-08-21 21:34:14
取决于您从何处加载数据。我使用的一个解决方案是创建一个LoadingService
app.factory('LoadingService', function($rootScope) {
return {
loading : function(message) {
$rootScope.loadingMessage = message;
},
loaded : function() {
$rootScope.loadingMessage = null;
}
}
}).controller('FooController', function($scope,$http,LoadingService) {
$scope.loadSomeData = function() {
LoadingService.loading('Data is loading');
$http.get('/data').finally(function() {
LoadingService.loaded();
});
};
});
因为我只有一个地方显示消息,所以我可以使用RootScope来处理这个问题。如果你想要一条加载消息多次出现,你也可以写一个指令来处理这个问题,就像Codezilla发布的那样
发布于 2014-01-17 00:51:44
编辑:不适用于版本1.3.0。使用请求/响应拦截器。
如果您希望全局侦听所有请求,并在有请求挂起时显示加载小部件,则可以使用request/response transformers计算请求数。您只需添加一个计数器,并在新请求时增加,在响应时减少。为此,我使用了一个提供者:
$httpProvider
.defaults
.transformRequest
.push(function(data) {
requestNotificationProvider
.fireRequestStarted(data);
return data;
});
transformResponse
也是如此。然后,同一个提供程序保存有关有多少请求处于挂起状态的信息,您可以在指令中使用这些信息。你可以在这里阅读(&复制/粘贴代码)完整的博客帖子:http://www.kvetis.com/2014/01/angularjs-loading-widget.html,附件中有一个有效的演示。
https://stackoverflow.com/questions/18358431
复制相似问题