AngularJS - Controller resource call not passing parameters to service factory?

angular-resource, angularjs, angularjs-service, javascript

Solution

Try

services.factory('Room', ['$resource',
    function($resource)
        {
            return $resource('/room/:room_id', {}, {
                enter: {method: 'PUT', params:{room_id:'@room_id'}}
        });
    }
]);

Edit:

Your parameters are passed as an object. Therefore, `'@room_id'` means that the value of the `room_id` property of the object passed should be extracted.

Note that the names must not match. In your controller, you could as well say

`Room.enter({id: '5'}...`

and get the value of the parameter in your service as

`..., params:{room_id:'@id'}`

Problem

In AngularJS, I'm trying to pass a parameter in a controller call to a service factory. However, I can't seem to get the parameter passed. The function always passes what I set to be the default in the service. And if I don't include the default, it doesn't pass anything. For example, my code looks similar to: Controller ``` ... Room.enter({room_id: '5'/*$scope.room_id*/}, function(return_data) { //Callback function stuff. ... } ... ``` Services ``` ... services.factory('Room', ['$resource', function($resource) { return $resource('/room/:room_id', {}, { enter: {method: 'PUT', params:{room_id:'-1'}} }); } ]); ... ``` This way the http resource "/room/-1" is called even though I am trying to pass 5. If I remove the params part of the "enter" method, then "/room" is all that is called. No params are passed at all. Any suggestions as to what I'm doing wrong? Thank you much!

Original source