Получение определенного json-ключа из контроллера AngularJS 1

Привет, я новичок в 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)}
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Директивы позволяют расширять HTML новыми элементами и атрибутами и даже создавать собственные структурные директивы для манипулирования DOM. С...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
1
0
85
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы смешиваете старый синтаксис с новым: .success против .then

.then() возвращает HTTP-обещание, который помещает ваш ответ в объект. Чтобы вытащить данные, вам сначала нужно получить доступ к .data.

Исправьте эту строку из:

.then(function(data) {
  return data;
})

к

.then(function(data) {
  return data.data;
})

Теперь я получаю этот ответ на своей консоли. (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;

WhoAmI 09.04.2018 12:22

@WhoAmI Я думаю, что вы тоже хранить его в массиве (для любой причины), попробуйте data.data[0]; как обходной путь

Aleksey Solovey 09.04.2018 12:25

Спасибо за помощь . Я получаю информацию.

WhoAmI 09.04.2018 12:28

Привет! массив содержит много объектов, и я хочу отобразить их целиком. [0] покажет только первый объект.

WhoAmI 10.04.2018 07:52

@WhoAmI затем используйте data.data и измените другую логику, чтобы вместо этого принять массив. Например, $scope.getAllData можно использовать в ng-repeat = "data in getAlldata", а затем вы можете извлечь свойства с помощью {{data.ID}} и т. д. (На данный момент это выходит за рамки вашего вопроса, исправьте его самостоятельно или задайте новый)

Aleksey Solovey 10.04.2018 10:06

Конечно спасибо еще раз

WhoAmI 10.04.2018 11:02

data - это массив, поэтому доступ к нему можно получить по индексу

    $scope.load = AppService.getAllService();
    $scope.load.then(function(data) {
    angular.forEach(data, function(value) {
       console.info(value.ID+"   "+value.name++"   "+value.escription);
    });
    })

Хорошо, это тоже сработало. Спасибо. Я хочу показать все объекты, содержащиеся в массиве.

WhoAmI 10.04.2018 09:24

Цикл данных и консоль angular.forEach (данные, функция (значение) {console.info (value.ID + "" + value.name ++ "" + value.escription);});

Ininiv 10.04.2018 09:37

Выкидывает ошибки: Uncaught SyntaxError: missing ) after argument list и [ng:areq] http://errors.angularjs.org/1.3.15/ng/areq?p0=getController&‌​p1=not%20aNaNunction‌​%2C%20got%20undefine‌​d

WhoAmI 10.04.2018 09:55

Отредактировано, проверьте сейчас

Ininiv 10.04.2018 11:17

Это все еще неверно. Хотя я внес поправку. $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); }); }); У меня работает нормально. Спасибо за помощь.

WhoAmI 10.04.2018 13:27

Другие вопросы по теме