为什么承诺不会在服务中解决?



我有一个工厂NewEditSvc,我试图共享NewCtrlEditCtrl共同的功能。我想做的一件事就是从服务内部的服务器获取feeParameters,但这不起作用。

angular.module('feeSuitesApp')
.factory('NewEditSvc', function($q, FeeTypesSvc){
  var _feeParameters = {};
  function getParameters(){
    return _feeParameters;
  }
  function setParameters(feeType){
    var promise = $q(function(resolve, reject){
      FeeTypesSvc.resource.get({id: feeType.id, association: 'fee_parameters'}).
      $promise.then(function(data){
        resolve(data);
      }, function(error){
        reject(error);
      })
    });
    promise.then(function(data){
      _feeParameters = data.master;
    });
  }
  return {
    getParameters: getParameters,
    setParameters: setParameters
  }
});
angular.module('feeSuitesApp')
.controller('NewCtrl', function(NewEditSvc, feeType){
  $scope.feeParameters = NewEditSvc.getParameters();
  $scope.feeType = feeType;
  $scope.setParameters = function(feeType){
    NewEditSvc.setParameters(feeType);
  };
  $scope.setParameters($scope.feeType);
});

最后一行之后没有设置$scope.feeParameters。但是,如果我从NewEditSvc.setParameters()返回promise变量,然后在我的NewCtrl中,我做以下操作:

  var promise = $scope.setParameters($scope.feeType);
  promise.then(function(data){
    $scope.feeParameters = data.master;
  });

那么一切都正常了。我做错了什么?

问题是,你没有在setParameters中返回你的承诺。https://docs.angularjs.org/api/ng/service/q/美元

添加return promise

最新更新