TabContainer.layout()
每次其容器更改大小时,您都必须调用。为此,您可以 1) 在包含 DOMNode 或 2) 容器变得可见时监视 DOMEvents onunderflow 和 onoverflow (once-n-forall)。
window.onresize 事件修复它的原因是 TabContainer 挂钩所述事件并调用其自己的布局。
在您的情况下,TabController 摆弄 TabContainer 的窗格,可能在某处缺少“layoutChildren”。最佳情况下,您应该将网格作为唯一子选项卡上的第一个。
部署网格后,它将采用绝对的计算高度 - 从 TabContainer '继承'。一旦 TabContainer 选择调整大小或指示这样做,就会触发此事件。
手动,您应该能够实现这些行 - 在重新打开选项卡后。脚本取自_Grid.js来说明
var grid = dijit.byId('MYGRIDID');
require(["dijit/layout/utils"], function(layerUtils) {
layoutUtils.layoutChildren(grid.domNode,
grid._contentBox,
[grid.tablist, {
domNode: grid.tablistSpacer,
layoutAlign: titleAlign
}, {
domNode: grid.containerNode,
layoutAlign: "client"
}]);
grid._containerContentBox = layoutUtils.marginBox2contentBox(grid.containerNode,
{
domNode: grid.containerNode,
layoutAlign: "client"
});
// note this line in particular
grid.selectedChildWidget.resize(grid._containerContentBox);
}