CORS を使用して $resource を使用してリソースをセットアップし、データを要求できるようにしたいと考えています。私は CORS を $http で動作させていますが、同じ手法は $resource には適用されません。
services.js ファイルで phonecatServices サービスをハッキングして、CORS を使用するように Angular チュートリアルの最後のステップを変更しました。
$http.defaults.useXDomain = true; を使用するこの例を見つけました。$http.defaults.headers.common['X-Requested-With']; 行を削除して、CORS を使用してデータを要求する角度を取得しますが、試してみると $resource.defaults.useXDomain = true; になります。エラーが表示されます:「未定義のプロパティ 'useXDomain' を設定できません」。
$resource にはこのプロパティがないと思われるので、私の質問は、CORS を使用してクロスドメイン リソース リクエストを行うように $resource を構成するにはどうすればよいかということです。
これが私のコードです:
angular.module('phonecatServices', ['ngResource']).
factory('Phone', function($resource){
return $resource('http\\://localhost\\:8080/:phoneId.json', {}, {
query: {params:{phoneId:'phones'}, isArray:true}
});
});
リクエストを作成しようとすると、次のエラーが表示されます: Object #<Resource> has no method 'push'
編集
$http の設定を試みましたが、ほとんどの場合は機能しますが、リソース クエリが呼び出されると、この場合は Phone.get(phoneId); になります。これは上記のエラーをスローするようです。
エラーの原因と思われる呼び出しコード (controllers.js step 11 angular tutorialから):
function PhoneDetailCtrl($scope, $routeParams, Phone) {
$scope.phone = Phone.get({phoneId: $routeParams.phoneId}, function(phone) {
$scope.mainImageUrl = phone.images[0];
});
$scope.setImage = function(imageUrl) {
$scope.mainImageUrl = imageUrl;
}
}
上記のメソッドの内部を削除すると、コードは (Web サイトの画像を取得せずに) 正常に実行されますが、なぜこれが機能しないのかわかりません。CORS を使用するように $http サービスを設定したので、明らかに $resource に渡す必要があります。
誰でもそれに光を当てることができますか?(動作するサンプルコードは大歓迎です)。
編集:13/08/13
この質問にアクセスした人なら誰でも知っているように、以下の回答はどれも実際には質問に答えていません.
編集: 06/09/13
現在、このプロジェクトを調査していますが、私が探しているものはすべて許可されているようです: https://github.com/jpillora/xdomain