Привет, я новичок в AngularJS и пытаюсь получить и показать данные ключа json отдельно в окне консоли. Я могу получить данные json целиком, но не могу получить данные в конкретном узле. Где я ошибаюсь?
Service.js
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.info($scope.getId + $scope.getName + $scope.getDescription);
})
}]);
Когда я консоль getAllData, я вижу весь ответ json, но не могу получить внутренние ключи.
Ответ JSON: -
Data
Array(1)
0
:
{$id: "1", ID: 1, Name: "APP", Description: "Something", Segments: Array(3)}


Вы смешиваете старый синтаксис с новым: .success против .then
.then() возвращает HTTP-обещание, который помещает ваш ответ в объект. Чтобы вытащить данные, вам сначала нужно получить доступ к .data.
Исправьте эту строку из:
.then(function(data) {
return data;
})
к
.then(function(data) {
return data.data;
})
@WhoAmI Я думаю, что вы тоже хранить его в массиве (для любой причины), попробуйте data.data[0]; как обходной путь
Спасибо за помощь . Я получаю информацию.
Привет! массив содержит много объектов, и я хочу отобразить их целиком. [0] покажет только первый объект.
@WhoAmI затем используйте data.data и измените другую логику, чтобы вместо этого принять массив. Например, $scope.getAllData можно использовать в ng-repeat = "data in getAlldata", а затем вы можете извлечь свойства с помощью {{data.ID}} и т. д. (На данный момент это выходит за рамки вашего вопроса, исправьте его самостоятельно или задайте новый)
Конечно спасибо еще раз
data - это массив, поэтому доступ к нему можно получить по индексу
$scope.load = AppService.getAllService();
$scope.load.then(function(data) {
angular.forEach(data, function(value) {
console.info(value.ID+" "+value.name++" "+value.escription);
});
})
Хорошо, это тоже сработало. Спасибо. Я хочу показать все объекты, содержащиеся в массиве.
Цикл данных и консоль angular.forEach (данные, функция (значение) {console.info (value.ID + "" + value.name ++ "" + value.escription);});
Выкидывает ошибки: Uncaught SyntaxError: missing ) after argument list и [ng:areq] http://errors.angularjs.org/1.3.15/ng/areq?p0=getController&p1=not%20aNaNunction%2C%20got%20undefined
Отредактировано, проверьте сейчас
Это все еще неверно. Хотя я внес поправку. $scope.load = AppService.getAllService(); $scope.load.then(function(data) { angular.forEach(data, function(value) { $scope.getAllData = data; console.info(value.ID +value.Name + value.Description); }); }); У меня работает нормально. Спасибо за помощь.
Теперь я получаю этот ответ на своей консоли.
(22) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}] {$id: "1", ID: 1, Name: "App", Description: "Some description", Segments: Array(3)}. Так что данные хранятся на моем контроллере здесь$scope.getId = data.ID; $scope.getName = data.Name; $scope.getDescription = data.Description;