2016-03-01 2 views
0

Довольно новый для Angular, который использовался в ASP/MVC/C#/Jquery в течение многих лет, так что это немного кривая обучения. Однако у меня возникла проблема с чем-то, что, по моему мнению, должно быть простым, и на основе моих знаний из других фреймворков работает не так, как ожидалось.Отображать определенное значение от json-ответа, используя Angular

Поэтому у меня есть запрос GET к контроллеру API, который возвращает данные, как это:

{"user":{"FirstName":"John","LastName":"Smith","EmailAddress":"[email protected]"}} 

Модуль:

(function() { 
"use strict"; 
//Getting the existing module 
angular.module("appName") 
    .controller("userDataController", function($scope, $http) { 
     $http.get("/api/user") 
      .then(function (response) { 
       //Example response 
       //{"user":{"FirstName":"John","LastName":"Smith","EmailAddress":"[email protected]"}} 
       $scope.userData = response.data; 
      }); 
    }); 
})(); 

Если я вывожу на мой взгляд {{userData}} я получаю строку данные отображаются, так как я понимаю, что область видимости присваивается указанной переменной.

Однако я не могу показать отдельные данные, например: FirstName.

Я пробовал ng-repeat на объекте userData, но это ничего не делает. Ive также пробовал различные вещи для отображения FirstName или EmailAddress, но не повезло. Я делаю что-то принципиально неправильно?

+0

Возвращает ли API стробированную версию данных? Если это так, используйте 'JSON.parse (response.data)' – JanS

ответ

1

Если предположить, что на самом деле объект JSON: {{userData.user.FirstName}}

В противном случае:

$scope.userData = angular.fromJson(response.data)

И тогда вы можете использовать код, указанный выше.

+0

Это проделана, спасибо. Будет ли ожидаемое поведение, хотя использовать функцию angular.fromJson для десериализации объекта для возврата? Не видно, что в каких-либо примерах. Думаю, мне, вероятно, нужно будет исправить функцию контроллера API. – Codesight

+0

На самом деле его не нужно десериализовать до тех пор, пока ваш API-контроллер фактически возвращает объект. Строка будет бесполезной для вас в любом контексте, поэтому ее не следует отправлять. От Джейсона, по крайней мере, ты двигаешься, пока он не может быть исправлен. –

+0

Исправлено это правильно, так что по крайней мере мне не нужно выполнять функцию fromJson и вы можете просто использовать {{userData.EmailAddress}} Спасибо за разъяснение, если я сделал это правильно, в первую очередь. – Codesight

0

Может быть ответом является текст типа контента, а не json, как ожидалось? Посмотрите на заголовки ответов.

+0

Тип ответа определенно json. Content-Type: применение/JSON; charset = utf-8 – Codesight

Смежные вопросы