The Ionic framework is not a good source base to look at for regular apps.
I'm a huge fan of the Ionic framework, but it's sourcecode is a mess and even the good parts are usually complex implementations of things you would definitely not be doing (such as keeping view state live, overriding default elements etc...)
Overriding default elements isn't very common, I think. Most apps just need to style elements not provide different functionality (which can usually be gained by simply creating a new directive).
In regards to managing view states, then yes it's very common,but you don't usually write those yourself, you use things like Ionic (or ui-router).
https://github.com/driftyco/ionic