如何将http angularjs调用响应存储到变量

如何将http angularjs调用响应存储到变量,angularjs,ajax,http,scope,storing-data,Angularjs,Ajax,Http,Scope,Storing Data,我正在从angularJS函数进行http get调用。调用可以完美地工作并返回响应,但我需要将响应存储在一个变量中,以便在$http之外使用它。我试图保留$scope.data.submissionFileID,但警报($scope.data.submissionFileID)显示未定义。我还想让这个电话同步。我是新手,你能帮我修改下面的代码吗 $scope.openWindow = function (e) { var url = '/Submis

我正在从angularJS函数进行http get调用。调用可以完美地工作并返回响应,但我需要将响应存储在一个变量中,以便在$http之外使用它。我试图保留$scope.data.submissionFileID,但警报($scope.data.submissionFileID)显示未定义。我还想让这个电话同步。我是新手,你能帮我修改下面的代码吗

     $scope.openWindow = function (e) {
        
        var url = '/Submission/GetSubmissionFileInfo?' + 'id=' + SubmissionID;
        $http.get(url).success(function (response) {
        $scope.data.submissionFileID = response; // response is an integer such as 123
        }); 
        alert($scope.data.submissionFileID); // This is undefined, what should I do to fix it?
        
        var content = "<h7><b>" + "Created at  </b>" + $scope.data.submissionFileID + "</h7><br><br>";
        
    }
$scope.openWindow=函数(e){
var url='/Submission/GetSubmissionFileInfo?'+'id='+SubmissionID;
$http.get(url).success(函数(响应){
$scope.data.submissionFileID=response;//response是一个整数,如123
}); 
警报($scope.data.submissionFileID);//这是未定义的,我应该如何修复它?
var content=“”+”创建于“+$scope.data.submissionFileID+”

”; }
<> >要考虑的是,在Acyc函数有机会完成之前调用<代码>警报(…)>代码>。一个选项是将响应发送到另一个函数,该函数设置$scope变量并执行您可能需要的任何其他操作

$scope.openWindow = function (e) {
var url = '/Submission/GetSubmissionFileInfo?' + 'id=' + SubmissionID;
   $http.get(url).success(function (response) {
      $scope.doTheThing(response);
   }); 
}

$scope.data = {}

$scope.doTheThing = function(response) {
   $scope.data.submissionFileID = response;
}
在HTML模板文件中

<div ng-if="!data.submissionFileID">Retrieving Data....</div>
<div ng-if="data.submissionFileID">
<h7><b>Created at </b> {{data.submissionFileID}}</h7>
</div>
正在检索数据。。。。
在{data.submissionFileID}创建

我想让这个调用同步,因为函数的另一部分我想让我的代码等待。你不能,因为网络请求基本上是异步的。我怎么能让我的代码等待,因为它正在准备内容,而它不能等到响应回来。添加了我正在准备的内容和回复。var content=“”+”创建于“+$scope.data.submissionFileID+”

”;谢谢你,约翰。在doTheThing尝试设置响应时遇到异常-TypeError:无法设置未定义的属性'submissionFileID'。我猜$scope.data还不存在?我已经编辑了我的答案是的!例外是固定的。但在这里,事情变得有点棘手。如果我们在openWindow函数中的调用之后放置一个警报($scope.data.submissionFileID),由于异步调用,它仍然表示为未定义。代码不会等到在doTheThing函数中设置它。在准备内容时,我不得不使用$scope.data.submissionFileID。我在最后一行添加了那行代码。知道我们能做些什么来修复它吗?只要有一个占位符,它可以用ng if来切换。我编辑了我的答案,它很有效。谢谢你,约翰。