2017-05-02 7 views
0

나는HTTP 응답 개체에 데이터 필드가 없습니다. 어떻게 접근 할 수 있습니까?

$scope.hero.order = response.data;

를 사용하여 주문 데이터에 액세스하려면 그러나 그것은 정의의 오류를주고 내가 응답 객체를 검사 할 때 누군가가 내 실수를 강조 할 수 일반적입니다 보여 더 data 필드가 없다?

Image is shown

OrderService.js

angular.module('Orders') 
    .service('OrderService', ['$http', '$state', '$resource', '$q', 'SettingService', '$localStorage', "MessageService", 
    function($http, $state, $resource, $q, SettingService, $localStorage, MessageService) { 
     var orderResource = $resource(SettingService.baseUrl + "api/orders/:id", {id:'@id'}, {'query':{method:'GET', isArray:false}, 'update':{method:'PATCH'}}); 
     var service = { 
getOrder : function(OrderId, successCallback, failureCallback){ 
       orderResource.query({id:OrderId}, successCallback, failureCallback); 
     } 
     } 
     return service; 
    }]); 

답변

1

orderResource.query()의 성공 콜백의 첫 번째 인수는 응답 본문 (귀하의 경우 주문 개체)이기 때문에 당신은 "정의의 오류"를 얻을, 응답 객체가 아닙니다. 당신은 $resourcedocument을 참조 할 수 있습니다

function(order, getResponseHeaders, status, statusText) { 
    $scope.hero.order = order; 
    ... 
} 

: 그래서, 당신의 성공 콜백 함수가 같아야합니다

성공 콜백 (값 (객체로 호출

| 배열), responseHeaders (기능) 상태 (수),하는 statusText (문자열)) 인수

당신이 지금() response.data에서 주문 객체를 얻으려고 할 것은

$http의 동작 (,542,) - $http의 성공 콜백은 response 개체를 수신하며, data 필드는 http 응답 본문을 참조합니다. 그러나 $resource의 경우에는 body, headers, status 등이 모두 매개 변수로 순차적으로 전달됩니다.

AngularJS가 동작을 정렬해야하지만 불행히도 그렇지 않습니다.