主要思路是新建TabContainer的扩展类,重载其closeChild属性,使得其在关闭子容器时,不调用该子容器的destroyRecursive方法。
define([ "dojo/_base/declare","dijit/layout/TabContainer"
],function(declare,TabContainer) {return declare("comm.comm.ExTabContainer",TabContainer,{
closeChildAction:"destroy",
closeChild: function(/*dijit/_WidgetBase*/ page){
// summary:
// Callback when user clicks the [X] to remove a page.
// If onClose() returns true then remove and destroy the child.
// tags:
// private
var remove = page.onClose && page.onClose(this,page);
if(remove){
this.removeChild(page);
if (this.closeChildAction=="destroy"){
// makes sure we can clean up executeScripts in ContentPane onUnLoad
page.destroyRecursive();
}
}
}
});
});
然后创建TabContainer的方法如下:
var tc=new ExTabContainer({
style : "height: 100%; width: 100%;",sans-serif; font-size:13px"> isLayoutContainer : true,sans-serif; font-size:13px"> region : 'center',sans-serif; font-size:13px"> closeChildAction:"hide"
});