backbone.js - marionette nested layouts unable to show view -


in application, creating nested layout views, below:

=> app layout view has header , body regions

var applayoutview = marionette.layoutview.extend({     el : "body",     regions: {         headerregion: "#ecp_header",         bodyregion: "#ecp_body",         contentregion: "#home"     }, 

=> dashboard layout view nested inside body region of app layout

ecpapp.dashboardlayoutview = marionette.layoutview.extend({     el: "#home",     regions: {         menuregion: "#left-menu",         contentregion: "#usr-dashboard"     }, 

the parent layout (applayout) creates n adds set of bootstrap tab content panes dom, child layout view (dashboard lyt) can use first tab pane (#home) show sidebar menu , content portion within first tab pane.

i rendering both layouts below: applayout:

the app layout renders correctly , attaches required header , footer elements dom. after rendering app layout, trigger boostrap.tab.shown event. in handler of event trying draw child layout view (dashboard lyt).

{   render: function() {     // load , attach templates header , body regions.     var headerview = new headerview({model:session});     this.headerregion.show(headerview);      var bodyview = new bodyview({model:session});     this.bodyregion.show(bodyview);      // trigger bootstrap tab show event,     // rest of content drawn on tabshown evt.     headerview.$el.find('a#home-tab').tab('show');   },    ontabshown: function() {     var self = this;     // create instance of nested layout view , show it.     var dblytview = new userdashboardlayoutview();     dblytview.render();     //self.contentregion.show(dblytview);   } } 

now comes problem, when call applayout.contentregion.show(dashboardlyt), child layout's render gets called , loads set of templates internal regions (left menu , dashboard content). render call returns caller (parent lyt) tries show(...) of rendered view, dom node disappearing.

below screenshot before child lyt render returns. can see child lyt has added elements correctly. enter image description here

once render returns , parent completes show method, elements disappearing.

dom elements before render call returns: enter image description here

after call returns , parent show executes enter image description here

it can seen highlighted node in above pic, not available more, after show method executes.

what doing wrong here?

jacob right, declaring render method totally wrong approach.

it should onrender.

{   onrender: function() {     // load , attach templates header , body regions.     var headerview = new headerview({model:session});     this.headerregion.show(headerview);      var bodyview = new bodyview({model:session});     this.bodyregion.show(bodyview);      // trigger bootstrap tab show event,     // rest of content drawn on tabshown evt.     headerview.$el.find('a#home-tab').tab('show');   }, 

Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -