Generally ui-router works on a state mechanism... It can be understood with an easy example:
Let's say we have a big application of a music library (like ..gaana or saavan or any other). And at the bottom of the page, you have a music player which is shared across all the state of the page.
Now let's say you just click on some songs to play. In this case, only that music player state should change instead of reloading the full page. That can be easily handled by ui-router.
While in ngRoute we just attach the view and the controller.