I am developing an application with the following structure:
|--------------------- header -------------------|
| |
|-----sidebar-----|-----------Main View----------|
| | |
| constraints | list of topics |
| | |
| | |
| | |
|_________________________________________________

Constraint selections are made in the sidebar which effect the list of topics are shown in the Main View Area.
Now this all works fine however i have come to the stage where my app is becoming more complex.
In certain cases I want to replace what is in the Main View completely and not show a list of topics but show the topic itself (render another template e.g views/topic.html) but i still want to keep the sidebar and not reload it. And then be able to return back to the list of topics.
This new topic view within Main View will also need to use a another controller as-well as the controller for the sidebar which is currently 'resultsController'.
Currently i use ng-route and the following structure:
$routeProvider.when('/', { templateUrl: 'views/results.html' });
<ng-view></ng-view>
// views/results.html
//------------------------------------------------------
<div data-ng-controller="resultsController">
<div ng-include src="'views/header.html'"></div>
<div ng-include src="'views/sidebar.html'"></div>
<div id="Main View">
<div ng-repeat="topic in topics"></div>
</div>
</div>
What would be the correct way to structure/architect my app?
(i have looked ui-router would this be the way to go? if so how would i structure my routes/view/controllers?)