I have created an angular service to talk back to a simple REST server made in PHP. I can see that I am able to get a single record, list of all records, and add new records, ho
Hi i know its too late but may be helpful for others, The reason behind conversion of response to array is, angular-resource expects "data" property in response and after that it iterate over each items inside the "data" but if you sends an string inside the data property from server like this
response = {
data: true
}
then Angular-resource iterate over the "data" Object and makes an array of data so, the correct way is to send response is like this
response = {
data: {users: users} // Or any other property but not directly data
}
Thanks
See this fiddle: http://jsfiddle.net/moderndegree/Kn3Tc/
angular.module('myApp', ['ngResource']).
factory('myService', function($http, $resource, $log){
return $resource('/', {}, {
get: {
method: 'GET',
transformRequest: [function(data, headersGetter){
// you can examine the raw request in here
$log.info(data);
$log.info(headersGetter());
}].concat($http.defaults.transformRequest),
transformResponse: [function (data, headersGetter) {
// you can examine the raw response in here
$log.info(data);
$log.info(headersGetter());
return {tada:"Check your console"};
}].concat($http.defaults.transformResponse)
}
});
}).
controller('myController', function(myService, $scope, $resource, $http, $log) {
$scope.results = myService.get();
});
To globally augment or override the default transforms, modify the $httpProvider.defaults.transformRequest and $httpProvider.defaults.transformResponse properties.
read more here: http://docs.angularjs.org/api/ng.$http