仍然试图理解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)会产生正在检索的正确数量的团队。
任何有关如何解决此问题的见解将不胜感激。
答案 0 :(得分:0)
此 return $ http.get(serviceUrl).then(function(results){ 返回结果; }); 将立即返回一个对象。 .then(函数...部分将在承诺完成后执行。因此,当您立即将呼叫返回给getTeams时,结果将无法使用。请尝试此操作:
return $http.get(serviceUrl);
然后
var promise = getTeams();
promise.then(function(results) {
......
}