如何在angularJS中等待异步数据的提取?
我有一个填充视图数据的服务。视图数据取决于从数据库中提取的数据,需要等待数据加载 例如:如何在angularJS中等待异步数据的提取?,angularjs,Angularjs,我有一个填充视图数据的服务。视图数据取决于从数据库中提取的数据,需要等待数据加载 例如: serviceX.getData()已经使用了promise模式。(x in data){的行需要该数据来生成viewData您可以将其绑定到范围变量。AngularJS将自动等待数据,然后开始渲染。当然,在将其设置到范围之前,您需要修改从回调函数中获取的数据 在您的情况下,这意味着您的服务的generateView方法需要返回一个承诺,您可以在范围变量上设置该承诺。您应该使用承诺来分离关注点: angul
serviceX.getData()
已经使用了promise
模式。(x in data){的行需要该数据来生成viewData
您可以将其绑定到范围变量。AngularJS将自动等待数据,然后开始渲染。当然,在将其设置到范围之前,您需要修改从回调函数中获取的数据
在您的情况下,这意味着您的服务的generateView方法需要返回一个承诺,您可以在范围变量上设置该承诺。您应该使用承诺来分离关注点:
angular.module('myModule', [])
.factory('Table', function($resource, $q) {
return {
data: function() {
edsql = edsql || '';
var deferred = $q.defer();
$resource('my-resource-url').get({}, function(r) {
deferred.resolve(r);
}, deferred.reject);
return deferred.promise;
}
};
});
并在控制器中按如下方式使用:
$scope.data = Table.data();
另一种方法是使用延迟承诺
更多信息请点击此处:.$q
$scope.data = Table.data();