I have a structure like this:
<div ui-view="main">
<!-- content populated here by AngularJS ui-router -->
<aside ui-view="sidebar">
<!-- content populated here by AngularJS ui-router -->
</aside>
</div>
I want to be able to define the templates in the main state like below instead of having to manage it in the child state.
.state('state1', {
url: '/',
views: {
'main': {
templateUrl: '/modules/blog/partials/index.html',
controller: 'BlogController'
},
'sidebar': {
templateUrl: '/modules/core/partials/sidebar.html'
}
}
});
I'd like the ui-view named sidebar
to not be a child state of main
and be populated by the main
state's views object instead of by a child state's templateUrl field. How can I do that?
We can use more views inside one state, see:
The definition would just need to use the absolute naming:
As explained in a detail here:
So, as snippet above shows, if the content of the
would be:
and the index.html will contain placeholder:
Then the
'main'
- will be searched in parent root (index.html)'sidebar@state1'
will be evaluated as viewName/target in 'state1' (itself)An example with similar idea and some layout.html behind...