AngularJs:我如何在同一服务中的另一个方法中解析另一个服务承诺

时间:2015-05-22 07:18:44

标签: javascript angularjs angular-services

我有两种服务方法

            getObject: function (url, id) {
                var defer = $q.defer();
                $http({method: 'GET', url: url+'/'+id}).
                    success(function (data, status, headers, config) {
                        defer.resolve(data);
                    })
                    .error(function (data, status, headers, config) {
                        defer.reject(status);
                    });
                return defer.promise;
            },

            openModal: function (objid, templateUrl) {
                var modalInstance = $modal.open({
                    templateUrl: templateUrl
                    controller: 'ModalInstanceCtrl',
                });

                return modalInstance.result
            },

现在,当openModalid

联系时,我希望这样做

然后我需要调用self.getObject(id)然后抓住该对象,然后将其传递给ModalInstanceCtrl

1 个答案:

答案 0 :(得分:1)

调用openModal时,调用getObject,然后使用resolve将该承诺传递给模态控制器:

openModal: function(objId, templateUrl) {
  var p = getObject(foo, bar);

  var modalInstance = $modal.open({
    templateUrl: templateUrl
    controller: 'ModalInstanceCtrl',
    resolve: {
      objectPromise: function() {
        return p;
      }
    }
  });

  return modalInstance.result
}

有关如何使用resolve将数据传递给模态控制器的更多文档,请参阅https://angular-ui.github.io/bootstrap/#/modal