繁体   English   中英

$ G在GET请求返回时不更新

[英]$q not updating when the GET request returns

我正在遵循这个关于承诺的Angular教程。 我有一个服务,检查数组是否为空,如果是,请点击REST服务,返回一个promise并更新数组。 这是相关代码:

  requestingProviders: [],
  getRequestingProviders: function() {
    var that = this;
    var deferred = $q.defer();
    if(this.requestingProviders.length === 0) {
      this.getResource().search({
        role: 'REQUESTING_PROVIDER'
      }, function(data) {
        that.requestingProviders = data.providers;
        deferred.resolve(data.providers);
      });
      return deferred.promise;
    } else {
      return that.requestingProviders;
    }
  }

service正在从controller调用。 以下是调用它的代码:

$scope.providers = providerService.getRequestingProviders();

REST调用已生成并返回正常,但视图永远不会更新。 这不像教程解释的那样工作。 是一个展示我期待的东西。 我究竟做错了什么?

你需要解决你的承诺:

var prom = providerService.getRequestingProviders();

prom.then(function (data) {
   $scope.providers = data;
});

此外,将代码更改为始终返回承诺:

getRequestingProviders: function() {
    var that = this;
    var deferred = $q.defer();
    if(this.requestingProviders.length === 0) {
      this.getResource().search({
        role: 'REQUESTING_PROVIDER'
      }, function(data) {
        that.requestingProviders = data.providers;
        deferred.resolve(data.providers);
      });

    } else {
      deferred.resolve(that.requestingProviders);
    }
    return deferred.promise;
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM