I created working example here. This is following your needs, because there are only two levels of nesting.
booksis a parent for both childrenbooks.homefills the middle erea - and is NOT parent ofbooks.detailbooks.detailreplaces the list view - but that means that its $scope (books.home) is lost
State definition:
.state('books', { url: '/books', views: { '@' : { templateUrl: 'layout.html', }, 'left@books' : { templateUrl: 'tpl.left.html',}, 'right@books' : { templateUrl: 'tpl.right.html',}, }, }) .state('books.home', { url: '/home', templateUrl: 'list.html', }) .state('books.detail', { url: '/:bookId', templateUrl: 'detail.html', controller: 'DetailCtrl' }) Check it here
But there is also a different approacha different approach, which I like more. The list view, is parent of its child, and therefore it could keep its $scope, while navigating among details. Similar stuff discussed herehere