2016-09-23 2 views
0

각도의 $ 리소스를 사용하여 API에서 데이터를 가져옵니다. 그러나Array에 대해 Angular.isArray (data)가 false를 반환합니다.

Priorities : $resource (baseUrl + 'priorities/:priorityType/:uuid/all', {}, { 
    query : { 
     method: 'GET', 
     params: { 
      priorityType : '@priorityType', 
      uuid : '@uuid' 
     }, 
     isArray: true 
    } 
}) 

, Priorities.query에게 $ 리소스를 호출 할 때 : badcfg 오류가 발생합니다 : 내 각 $ 리소스는 다음과 같이 구성되어 있습니다 "배열을 포함 할 것으로 예상 반응을하지만, 객체를 얻었다". 예외가 여기에 슬로우됩니다

[{"priority":"ONE","count":5,"globalCount":3037}] 

각-resource.js로 파고 :하지만 API 명확하게 배열을 반환 -이 예외는, API가 객체를 반환한다는 것을 의미하지만, $ 자원 배열을 수신하도록 구성되어있다 !!action.isArray true를 반환 예상대로

if (angular.isArray(data) !== (!!action.isArray)) { 
    throw $resourceMinErr('badcfg', ...); 
} 

하지만 이상하게 angular.isArray(data) false를 반환합니다. 무슨 일 이니?

+0

'API가 분명히 배열을 반환하고 있습니다. '잠깐, 그 _JSON_가 나타 납니까? 그렇다면 먼저 구문 분석해야합니다. – vlaz

+0

@vlaz이 예외는, 임의의 transformResponse 메소드가 불려 가기 전에 슬로우됩니다. – cscan

답변

0

응답을 json에서 변형해야합니다.

Mixin.staticMethod(Type, null, 'apiResponseTransformer', function (json) { 
    var data = angular.fromJson(json); 
    if (angular.isArray(data)) { 
     return data.map(Type.build).filter(Boolean); 
    } 
    return Type.build(data); 
}) 
관련 문제