I think caching data in a service has several advantages, you must be aware however, what is actually happening.
Here are a few facts and infos regarding services:
- they are singletons, meaning there is only one instance in your whole application
- a service is always there (you don't need to create it explicitly)
- a service can cache data which can be usefull, e.g. to maintain the state of a view/page and/or to reduce the amount of requests sent to the server
- services can be used to exchange data between different components (e.g. directives, controllers, other services, etc.)
- services can easily be injected where ever you need them
- services can be tested without any UI-related issues..
In certain cases you might need to pay attention tough:
- if different components share and modify the same service, they might "mess" up each others data - this can be desired, but might also have some side-effects
- services obviously only cache as long as the application "lives", i.e. if the user reloads or revisits the page, the data/state is lost. If you want to persist the data, you can store the service's data in the local storage for example.
I think a service is good if it has a clear, understandable API and doesn't try to do too much. And if it can be reused by several compontents, which seems to be the case with your requirements.
Please note that some of this is copied from my answer in a different post regarding services vs. directive. Maybe you can find some more info there.