Angularjs 如何从回调函数访问数据

Angularjs 如何从回调函数访问数据,angularjs,q,angular-promise,Angularjs,Q,Angular Promise,我已经编写了名为getChildren的方法来获取和id相关的数据,但我无法在调用方方法中访问该数据。我的示例代码如下 我在controller中编写了这两个方法,并传递了所有必要的对象 var baseMethod = function(rootNode) { var id = 123; var result = getChildren(id); }; var getChildren = function(id) { var deferred = $q.defer(); return

我已经编写了名为getChildren的方法来获取和id相关的数据,但我无法在调用方方法中访问该数据。我的示例代码如下

我在controller中编写了这两个方法,并传递了所有必要的对象

var baseMethod = function(rootNode) {
var id = 123;

var result = getChildren(id);
};


var getChildren = function(id) {
var deferred = $q.defer();

return dummyService.oneAction(id).then(
    function (data) {
        return deferred.resolve(data);
    }
);
}
这有什么问题吗。我想将回调中的数据分配给我的结果。我该怎么做。

你函数getChildren返回一个承诺,所以试试看

var baseMethod = function(rootNode) {
  var id = 123;
  var result;

  getChildren(id).then(function(data) {
    result = data;
  });
};

dummyService.oneAction是在回报承诺吗?是的。我在回调函数中得到了正确的数据。我尝试了这个。它不起作用。我的执行流程向前,但没有调用回调。所以我在结果中没有定义。我的执行流继续,但我的回调没有被调用。所以当我试图访问$scope.child时,我在$scope.child中得到了“undefined”,直到出现相同的问题。如果我尝试在调用之后使用$scope.child,则会出现“undefined”错误。这是因为回调仍然并没有被执行是的,我在控制器的开始就这样做了
var result = getChildren(id).then(function(data){

angular.copy(data, $scope.child)
});