AngularJS get请求不返回数据
AngularJS get request not returning data
我有以下代码,其中我试图获得JSON
文件并将其内容附加到我的$作用域。
第一个console.log
返回我需要的结果,但第二个返回undefined
。
正确的方法是什么来存储数据?
'use strict';
var myApp = angular.module('myApp.view1', ['ngRoute']);
myApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/view1', {
templateUrl: 'view1/view1.html',
controller: 'View1Ctrl'
});
}]);
myApp.controller('View1Ctrl', [
'$scope',
'$http',
function($scope, $http) {
$http.get('view1/info.json')
.then(function(res){
$scope.data = res.data.info
console.log($scope.data)
});
console.log($scope.data)
}]);
AngularJS的$http.get()
的then()
回调是异步调用的。
这意味着在回调中,它将工作,但不是在第二个。
这样做的原因是一个叫做Promises的东西。我绝对建议你调查一下。下面是按顺序发生的事情:
$http.get('view1/info.json')
告诉javascript我想要得到JSON数据。但它实际上还没有得到它。然后,它执行控制台日志。
console.log($scope.data)
美元范围。数据未定义。什么也没定!然后,javascript实际获取JSON数据。当它获得数据时,调用then
中的函数。在这之后,
$scope.data = res.data.info
console.log($scope.data)
定义了 $scope.data
,这就是console.log
工作的原因。阅读更多关于承诺的信息!
这里是一个很好的起点:https://www.youtube.com/watch?v=wA0gZnBI8i4
好了,您的数据被存储了。但不是在执行第二个console.log()时。"then"承诺/回调将在第二个console.log()之后运行。如果需要$scope。数据在你的模板,这应该工作。angular的摘要循环将在$https回调之后运行。
相关文章:
- AJAX调用并在Node中获取返回数据
- 角度服务未返回数据
- 统计ajax返回数据中的html元素
- 有没有更好的方法可以测量从Ajax调用返回数据所需的总时间
- Imgur API图像搜索未返回数据
- javascript对象显示为null,但object.properties返回数据
- 如何从ajax调用JQuery返回数据
- 试图从嵌套的回调函数返回数据
- NodeJS FS 不从多个文件返回数据
- ajax函数未在C#中返回数据
- 如何在公共js模块中从web服务返回数据
- 将字符串与 JSON 对象组合以返回数据
- 嵌套异步函数未及时返回数据的问题
- NodeJS JSONStream 以一个长字符串的形式返回数据
- 如何使用 HTML 图像请求将数据发送到服务器,或返回数据作为响应
- 从 Angular 模态服务中的模态主体模板返回数据
- jQuery 每个循环返回数据两次
- $.getJSON 在返回数据后不会运行函数
- 如何访问返回数据中的特定json值
- 工厂返回数据后未设置角度$scope