2

我正在尝试执行以下操作:在我的控制器中,我有使用 $recource 调用从数据库中获取数据的函数。服务“我的服务”

var fillSubData = function (containerToFill) {
  resService.getSubDataFromDB(//$resource service
    {params},
    function (res) {
      //do something with containerToFill with the result res add new values
    }
  );
}

var fillData = function (containerToFill) {
  resService.getDataFromDB(//$resource service
    {params},
    function (res) {
      //do something with containerToFill with the result res
      fillSubData(containerToFill);
    }
  );
}

控制器

$scope.dataToFill;// object

var initialize = function () {
  //by reference
  myService.fillData(dataToFill);
  // I need the dataToFill filled to do other thing with data recovered and built
  angular.forEach(dataToFill.someArrayBuilt, function (item) {
    //do something with item...
  })
}

我需要填充的 dataToFill 来对恢复和构建的数据做其他事情,但是资源调用是异步的,我该怎么做?

4

1 回答 1

0

请注意,资源操作返回一个包含$promise属性的对象。一旦异步调用返回,您可以使用它继续回调:

myService.fillData(dataToFill).$promise.then(function() {
    // I need the dataToFill filled to do other thing with data recovered and built
    angular.forEach(dataToFill.someArrayBuilt, function (item) {
        //do something with item...
    })
});

要启用此功能,我建议您只需让您的fillData方法返回资源调用的结果:

var fillData = function (containerToFill) {
    return resService.getDataFromDB(//$resource service ...
于 2014-06-06T23:38:20.357 回答