AngularJS模态关闭调用JS函数不执行

时间:2014-11-19 19:25:29

标签: javascript angularjs

仍然试图理解AngularJS的复杂性,这是我缺乏更好理解的借口。

我有一个功能:

function getTeams(){
  var onSuccess = function(results){
     $scope.myTeams = results.data;
     console.log($scope.myTeams);
  };

  var onFail = function(error){
    console.log(error);
  };

  dataService.getTeams().then(onSuccess, onFail);
};

dataService只是一个具有服务调用的JS文件(即):

var serviceFactory = [];

var _getTeams = function(){
  return $http.get(serviceUrl).then(function (results){
    return results;
  });
};

serviceFactory.getTeams = _getTeams;

return serviceFactory;

最初,当我调用该函数时,我能够获得我需要的团队列表。

但是当我打开一个模态窗口时,在关闭模态窗口时我会调用相同的函数,如:

$scope.openTeamModal = function(){
  $scope.modalInstance = $modal.open({
    templateUrl: 'modal.html',
    controller: 'modalCtrl',
    backdrop: 'static'
  });

  this.modalInstance.result.then(
    function(results){
      getTeams();
    }
  )
}

当我在 modalInstance.result 行正下方的getTeams()行设置断点(在Chrome调试控制台中)时,实际上正在检索这些团队。但是当我删除断点并让应用程序完成其进程时,$ scope.myTeams的值没有正确更新。

如果没有Debug,console.log($ scope.myTeams)将产生我正在检索的原始团队数。

使用Debug,console.log($ scope.myTeams)会产生正在检索的正确数量的团队。

任何有关如何解决此问题的见解将不胜感激。

1 个答案:

答案 0 :(得分:0)

此        return $ http.get(serviceUrl).then(function(results){            返回结果;        }); 将立即返回一个对象。 .then(函数...部分将在承诺完成后执行。因此,当您立即将呼叫返回给getTeams时,结果将无法使用。请尝试此操作:

   return $http.get(serviceUrl);

然后

   var promise = getTeams();
   promise.then(function(results) {
      ......
   }