如何存储对变量的http angularjs调用响应
Posted
技术标签:
【中文标题】如何存储对变量的http angularjs调用响应【英文标题】:How to store http angularjs call response to variable 【发布时间】:2021-07-18 17:12:06 【问题描述】:我正在从 angularJS 函数进行 http get 调用。调用工作完美并得到响应,但我需要将响应存储在一个变量中,以便我可以在 $http 之外使用它。我试图保留 $scope.data.submissionFileID 但 alert($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>";
【问题讨论】:
***.com/q/14220321/3001761 我想让这个调用同步,因为函数的其他部分我想让我的代码等待。 你不能,因为网络请求基本上是异步的。 我怎样才能让我的代码等待,因为它正在准备内容并且无法等到响应返回。添加了我正在准备的内容和响应。 var content = "需要考虑的是 alert(...)
在异步函数有机会完成之前被调用。一种选择是将响应发送到另一个设置 $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>
【讨论】:
谢谢约翰。 doTheThing 在尝试设置响应时出现异常 - TypeError: Cannot set property 'submissionFileID' of undefined. 我猜 $scope.data 还不存在?我已经编辑了我的答案 是的!异常已修复。但是这里的事情变得有点棘手。如果我们在 openWindow 函数的调用之后放置一个 alert($scope.data.submissionFileID) ,由于异步调用,它仍然显示为未定义。代码不会等到它在 doTheThing 函数中设置。当我准备该内容时,我不得不使用 $scope.data.submissionFileID 。我在最后一行添加了那行代码。知道我们可以做些什么来解决它吗? 只需要一个占位符,用 ng-if 切换。我编辑了我的答案以上是关于如何存储对变量的http angularjs调用响应的主要内容,如果未能解决你的问题,请参考以下文章
Angularjs 如何对 $http 调用进行正确的错误处理?
如何对 AngularJS $promise.then 进行单元测试