I'm attempting to pass data in the request body and a request parameter to an Angular $resource call. Below is my click handler from my controller and the service which it calls:
controller.js:
vm.setLimit = function(limit) {
var data = {
activity: 'point_limit',
limit: limit
};
playersService.setPlayerLimit({
playerId: playerId,
data
});
};
service.js:
angular.module('gameApp')
.factory('playersService', ['$resource',
function($resource) {
var base = '/api/players/:playerId/';
return $resource(base, {}, {
getPlayerInfo: {method: 'GET', url: base + 'playerInfo'},
setPlayerLimit: {method: 'POST', url: base + 'playerLimit'}
});
}]);
getPlayerInfo
works, but setPlayerLimit
does not because, for some reason, it is not being passed the playerId
.
Answer:
playersService.setPlayerLimit
should take 4 parameters in order:
(request parameters, request body, success callback, error callback)
Modify your code as:
playersService.setPlayerLimit({playerId: playerId}, data, success, error);