Javascript 如何将获取数据分配给$scope.variable
我对javascript和angular都相当陌生。我的代码从API检索数据,并可以将其打印到控制台,但当我尝试将其分配给Javascript 如何将获取数据分配给$scope.variable,javascript,html,angularjs,web,Javascript,Html,Angularjs,Web,我对javascript和angular都相当陌生。我的代码从API检索数据,并可以将其打印到控制台,但当我尝试将其分配给$scope.saveData时,它只在获取内部工作。我已经了解到我的问题与异步运行的代码和承诺的工作方式有关,但我似乎找不到任何可以解决我问题的资源。这是我的密码 棱角的 angular.module('myApp',[]) .controller('testCtrl',['$scope', function($scope){ const response = a
$scope.saveData
时,它只在获取内部工作。我已经了解到我的问题与异步运行的代码和承诺的工作方式有关,但我似乎找不到任何可以解决我问题的资源。这是我的密码
棱角的
angular.module('myApp',[])
.controller('testCtrl',['$scope', function($scope){
const response = await fetch("http://localhost:3000/conferences").then(res=>{
// $scope.saveData = null;
if(res.url == "http://localhost:3000/outlook"){
res.json().then(data=> {
window.location.replace(data.url)
})
}else{
res.json().then(data=> {
$scope.saveData = data
console.log($scope.saveData)
});
}
});
console.log($scope.saveData)
}]);
html
预定通话
预定通话
{{saveData}}
$scope.saveData=data
下的console.log有效。它对js代码底部的console.log不起作用。您想实现什么?为什么回调内部的日志记录$scope.saveData
不足
正如您所提到的,问题是因为fetch
是异步发生的。在。然后(…)
的内部,保证已检索到localhost:3000/conferences
的内容。由于此调用是异步的,这意味着代码可能会无序执行。发生了以下情况:
(1) 获取对本地主机的调用:3000/次会议
(2) 执行console.log($scope.saveData)(尚未分配此值)
(3) fetch调用的结果将被返回,.then(…)中的所有内容都将执行(此console.log($scope.saveData)工作,因为它保证fetch已完成
如果您必须让代码等待获取的结果,我建议您看看您试图完成什么?为什么在回调中记录
$scope.saveData
不够
正如您所提到的,问题是因为fetch
是异步进行的。在的内部,然后(…)
保证已检索到localhost:3000/conferences
的内容。由于此调用是异步的,这意味着代码可能会无序执行。发生了以下情况:
(1) 获取对本地主机的调用:3000/次会议
(2) 执行console.log($scope.saveData)(尚未分配此值)
(3) fetch调用的结果将被返回,.then(…)中的所有内容都将执行(此console.log($scope.saveData)工作,因为它保证fetch已完成
如果您必须让代码等待fetch的结果,我建议您查看一下我的问题是,我想引用相应html文件中存储在$scope.saveData中的值,但目前没有任何内容被打印到视图中。我想我的问题是如何以可复制的方式存储该数据在html文件中检索到。很抱歉,缺少clarity@TomKaizer这是否只是一种提取在角度摘要周期之外解析的情况?如果是这样,您可以将赋值包装到
$scope.apply()中的$scope
变量
。成功了!感谢我在这方面已经坚持了很长时间。我的问题是我想在相应的html文件中引用存储在$scope.saveData中的值,但目前没有任何内容被打印到视图中。我想我的问题是如何以可在html文件中检索的方式存储该数据。对不起缺乏clarity@TomKaizer这是否只是一种提取在角度摘要周期之外解析的情况?如果是这样,您可以将赋值包装到$scope.apply()中的$scope
变量
。这很有效!感谢我在这方面已经坚持了很长时间。坦白说,我认为使用AngularJS比使用原始JavaScript更容易。坦白说,我认为使用AngularJS比使用原始JavaScript更容易。
<!DOCTYPE html>
<html ng-app = 'myApp'>
<head>
<title>Scheduled Calls</title>
<link rel="stylesheet/less" type = "text/css" href="./scheduledCalls.less" />
</head>
<body>
<header style="text-align: center">
<h1 class = "header" >Scheduled Calls</h1>
</header>
<div ng-controller="testCtrl" >
<p>{{saveData}}</p>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src = "scheduledCalls.js"></script>
</body>
</html>