Well, I found a clue from the given documentation of ui-router the says
You can assign a controller to your template. Warning: The controller will not be instantiated if template is not defined.
https://github.com/angular-ui/ui-router/wiki#controllers
But I tried to add template and still didn’t work, then I saw that my parent route template didn’t have <div ui-view></div> (I mistakenly removed it) so when I added it back it worked :), So, to instantiate our child’s route controller, we must have <div ui-view></div> in our parent’s route template.