如何在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();