This is our strategy as well at Uniiverse. This is also an effective way of ensuring that data is in sync, should that be a requirement in a particular state. Just attach the call on State.enter() and you're good to go.
We use this strategy also. In setupController functions, (of your routes), we typically run fetches and fill content of our controllers. Why does everyone get hung up on Ember-data?
How are ya'll caching your stuff? Sounds like all that is doing is just making fresh requests for every route.
The Controller. Then you can do a quick check to see if `someControllerForState.hasData()`.
We use a local storage method in browser and app data when running in phone gap