I'm trying to append a query parameter to all API calls which I fetch from the URL.
factory('Post', function ($resource, $routeParams) {
return $resource('api/posts', {customer_id: $routeParams.customerId});
})
This works the first time the Post service is used but the second time it's injected it has already been initialized and is using the first customer ID even though the URL has changed.
How do I make this work as intended?
Because services are singletons. That's why you get that behavior.
I recommend that do not inject $routeParams as the init params of a service. Instead, inject it in controllers, then call service's functions using the values in $routeParams as params.
The code may like this:
factory('Post', function ($resource) {
return {
doPost: function(customerId) {
$resource('api/posts', {customer_id: customerId});
}
};
});
//...
//in some controller
Post.doPost($routeParams.customerId)
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