Cómo configurar el recurso de $ Angular (ngResource) para extraer datos de otro dominio usando CORS
Me gustaría poder configurar recursos usando $ resource usando CORS para solicitar mis datos. Tengo CORS trabajando con $ http, pero las mismas técnicas no se aplican a $ resource y esperaba que alguien pudiera venir a rescatarme y mostrarme cómo con $ resource.
He modificado elúltimo paso del tutorial angular para utilizar CORS pirateando el servicio phonecatServices, en el archivo services.js.
encontréeste ejemplo que utiliza el $ http.defaults.useXDomain = true; elimine $ http.defaults.headers.common ['X-Requested-With']; línea para obtener angular para solicitar los datos usando CORS, pero si intento $ resource.defaults.useXDomain = true; Recibo el error: "No se puede establecer la propiedad 'useXDomain' de undefined".
Supongo que $ resource no tiene esta propiedad, así que mi pregunta es, ¿cómo configuro $ resource para realizar solicitudes de recursos entre dominios usando CORS?
Aquí está mi código:
angular.module('phonecatServices', ['ngResource']).
factory('Phone', function($resource){
return $resource('http\\://localhost\\:8080/:phoneId.json', {}, {
query: {params:{phoneId:'phones'}, isArray:true}
});
});
Recibo el siguiente error cuando intento realizar la solicitud: El objeto # <Resource> no tiene ningún método 'push'
EDITAR
He intentado configurar para $ http y funciona la mayor parte del tiempo, pero cuando se realiza la llamada a la consulta de recursos, en este caso, Phone.get (phoneId); Esto parece arrojar el error anterior.
El código de llamada que sospecho está causando el error (de controllers.jspaso 11 tutorial angular):
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;
}
}
Si quito las entrañas del método anterior, el código funciona bien (sin obtener la imagen del sitio web), pero no entiendo por qué esto no funcionaría. He configurado el servicio $ http para usar CORS de modo que debería pasarlo a $ resource aparentemente.
¿Alguien puede arrojar alguna luz sobre él? (Cualquier código de ejemplo de trabajo sería muy apreciado).
EDITAR: 13/08/13
Solo para que todos los que visiten esta pregunta estén conscientes, ninguna de las respuestas a continuación realmente ha respondido la pregunta, estoy investigando una respuesta, pero si alguien ve esto y tiene una respuesta, lo apreciaría enormemente.
EDITAR: 06/09/13
Actualmente mirando este proyecto, parece permitir todo lo que busco:https://github.com/jpillora/xdomain