2013-05-14 11 views
9

REST列アレイの文字列の配列を作成し、「活性」データ角度nsResourceは私が働くウェブ・サービス・コントローラを有する

GET /api/activity/list 
GET /api/activity/1 
GET /api/activity/activity-slug-name 
PUT /api/activity 
DELETE /api/activity/1 

また、いくつかの「メタ」データを楽しめ

GET /api/activity/meta/dates 
GET /api/activity/meta/states 

彼らはすべてJSONオブジェクトを返すので、ngResourceを使って非常にうまく動作します。 /API /活動/メタは/日付はしていませんしかし

それはchar型の配列の配列に

[ 
    "2013-06-02T17:05:16Z", 
    "2013-06-07T17:05:16Z", 
    "2013-08-17T17:05:16Z" 
] 

ngResourceはこのターン文字列の配列を返します

参照:明らかInvalid result from ngResource request with string array

私ができますメタ機能を何らかの形のActivityMetaServiceに分割するだけですが、私はすべて一緒に保つことを好むでしょう

私の質問は

です

この過酷なオブジェクト分解を実行するのをngResourceで停止する方法はありますか?

また、私は角をつけたバグですか?あなたのコメントを事前

* UPDATE *

おかげマークで

感謝。あなたがAngularのバグを指摘し、他の2つの答えが現在のアーキテクチャーに合わないため、答えとして配置した場合、私はそれを受け入れました。

あなたは正しい技術的ですが、誰もさておき、80年代半ば以降の文字の配列として文字列ののにC/C++プログラマーを持っていません:)

私はangular.jsプロジェクトをgithubの上のチケットを調達しています、文字列の代わりに$http serviceを使用する唯一の配列を取得するには

https://github.com/angular/angular.js/issues/2664

+2

を使用するように試みることができる私たちのこれは、 'angular.copy()' '$リソース()'の内部の使用で発生します。 'copy()'関数は文字列の配列を見つけると文字列を文字の配列として扱います(実際にはその文字列です)。この動作を無効にする方法がないのは、現実的には '$ http'サービスを直接使用することだけです。 –

答えて

2

あなたはtransformRequest

query: { 
    method: 'GET', 
    isArray: true, 
    transformResponse: function (data, headers) { 
    var tranformed = []; 
    [].forEach.call(eval(data), function (d) { 
     tranformed.push({ name: d }); 
    }); 
    return tranformed; 
    } 

}

関連する問題