Reputation: 4407
Iron router allows to render different content into layout
template, or load smaller templates into yields
, but when user goes to different path, a content from previous yields does not unload templates inside them, until you force router to render null
as a template into yields.
I have written a simple loop, which unload all yields before rendering new view, but i think there should be easier solution.
Router.route('/docs/container/', function () {
// render base layout for view
this.render('view');
// clear all parts
var yields = [
'viewSideLeft',
'viewSideRight',
'viewFooter',
'viewTopbar',
'pageContent',
'pageSideLeft',
'pageSideRight',
'pageFooter',
'pageTopbar'
];
for (var i = 0; i < yields.length; i++) {
this.render(null, {to: yields[i]});
}
// and render only this parts which you need:
this.render('viewDocsSideLeft', {to: 'viewSideLeft'});
this.render('viewDocsSideRight', {to: 'viewSideRight'});
this.render('viewDocsFooter', {to: 'viewFooter'});
this.render('viewDocsTopbar', {to: 'viewTopbar'});
this.render('pageDocsContainer', {to: 'pageContent'});
// this.render('pageDocsContainerSideLeft', {to: 'pageSideLeft'});
// this.render('pageDocsContainerSideRight', {to: 'pageSideRight'});
// this.render('pageDocsContainerFooter', {to: 'pageFooter'});
// this.render('pageDocsContainerTopbar', {to: 'pageTopbar'});
});
Here is a github issue related to this problem and it seems it has not been solved yet. https://github.com/iron-meteor/iron-router/issues/174
Upvotes: 0
Views: 200