2016-09-23 3 views
0

angleの$リソースを使用してAPIからデータを取得しています。 badcfgエラーがスローされます:$リソースPriorities.queryを呼び出すとき、しかしAngular.isArray(data)は配列に対してfalseを返します

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

:私の角度$リソースは、次のように構成された「配列を含むことが期待応答が、オブジェクトを得ました」。この例外は、APIオブジェクトを返しますが$リソースは、アレイを受信するように構成されていることを意味します - しかし、APIが明確に配列を返すされています

角度-resource.jsに掘り
[{"priority":"ONE","count":5,"globalCount":3037}] 

、例外がここにスローされます。 !!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); 
}) 
関連する問題