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!
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'}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With