您好我是AngularJS的新手,并尝试将json密钥数据分别提取并显示到控制台窗口。我能够获取整个json数据,但无法获取特定节点内的数据。我哪里错了?
Service.js
advertised.listeners=PLAINTEXT://200.100.1.5:9092
listeners=PLAINTEXT://10.5.1.5:9092
控制器: -
app.service("AppService", function($http) {
return {
network: [],
getAllService: function(network){
return $http({
method: 'GET',
url: 'http://99.126.4.6:3200/app/json/allDatas',
headers: {'Content-Type': 'application/json'}
})
.then(function(data) {
return data;
})
}
}
});
当我控制app.controller('getController', ['$scope','$http','AppService','$localStorage', function ($scope,$http,AppService,$localStorage) {
$scope.load = AppService.getAllService();
$scope.load.then(function(data) {
$scope.getAllData = data;
$scope.getId = data.ID;
$scope.getName = data.Name;
$scope.getDescription = data.Description;
console.log($scope.getId + $scope.getName + $scope.getDescription);
})
}]);
时,我可以看到整个json响应。但无法获取内部密钥。
JSON响应: -
getAllData
答案 0 :(得分:2)
您正在将旧语法与新语法混合:.success
vs. .then
.then()
会返回一个Http Promise,它会将您的回复包装在一个对象中。要提取数据,您需要先访问.data
。
修复此行:
.then(function(data) {
return data;
})
到
.then(function(data) {
return data.data;
})
答案 1 :(得分:1)
数据是一个数组,因此按索引
访问它的值 $scope.load = AppService.getAllService();
$scope.load.then(function(data) {
angular.forEach(data, function(value) {
console.log(value.ID+" "+value.name++" "+value.escription);
});
})