Dojo dijit嵌入的BorderContainer在模板内不起作用
我有一个内嵌的BorderContainer,当标记位于主页面内时,它可以正常工作。当我将边框容器标记移动到带有模板的小部件中时,出现了一些问题,边框容器将其所有子项都放置在左上角的位置上 下面是一个简单的片段,它显示了问题: 使用dojo 1.12.1版在本地运行时也会发生同样的情况Dojo dijit嵌入的BorderContainer在模板内不起作用,dojo,dijit.layout,Dojo,Dijit.layout,我有一个内嵌的BorderContainer,当标记位于主页面内时,它可以正常工作。当我将边框容器标记移动到带有模板的小部件中时,出现了一些问题,边框容器将其所有子项都放置在左上角的位置上 下面是一个简单的片段,它显示了问题: 使用dojo 1.12.1版在本地运行时也会发生同样的情况 你能告诉我我错过了什么吗 如……文件中所述 dijit.\u WidgetsInTemplateMixin mixin不支持将布局小部件添加为子项。尤其是对子对象的启动和调整大小调用存在问题 正如lewis提到
你能告诉我我错过了什么吗 如……文件中所述 dijit.\u WidgetsInTemplateMixin mixin不支持将布局小部件添加为子项。尤其是对子对象的启动和调整大小调用存在问题
正如lewis提到的,它不支持布局小部件作为子部件, 我建议您使用编程方法,在主脚本中实例化小部件,如下所示:
require(["dojo/_base/array",
'dojo/_base/declare',
"dojo/parser",
"dojo/on",
"myapp/MyWidget",
"dijit/layout/ContentPane",
"dijit/layout/BorderContainer",
'dojo/domReady!'],
function(array, declare, parser, on, MyWidget) {
console.log("b4 parse ....")
parser.parse().then(function() {
console.log("after parse ....");
//create your widget here
new MyWidget({}).placeAt("borderContainer3");
});
}
);
您可以在这里找到一个定制的。您可以让它工作,但您必须自己将调整大小请求转发到BorderContainer 要记住的一条规则是,如果Dojo布局小部件有一个子小部件,它们将调用resize。如果有多个widget,它不知道给每个widget多少空间,那么就举手决定大小 为模板中的BorderContainer指定数据为dojo attachpoint=bc的附着点名称。然后重载resize方法并转发resize请求 isLayoutContainer:true, 调整大小:functionchangeSize,resultSize{ 这是继承的论据; this.bc.resizechangeSize,resultSize; } 这假设BorderContainer是唯一值得调整大小的东西,即占用小部件的所有空间 由于您现在正在对子级调用resize,所以您的行为就像一个布局小部件,所以您还应该定义isLayoutContainer,如图所示。ResizeAPI没有很好的文档记录,isLayoutContainer更是如此。如果没有它,当窗口大小更改时,您可能会注意到无关的调整大小调用
如果以后在边框容器上方或下方创建内容,则需要相应地调整changeSize.w和changeSize.h。对于像myWidget.resize这样的调用,如果不提供changeSize和resultSize,那么这会变得更加困难,您必须使用当前的大小,或者以其他方式计算它。在这种情况下很有帮助。有一个高度问题,我认为这是由小部件声明性实例化引起的。你试过程序化实例化吗?没有,我没有试过程序化实例化。我刚刚发现了一个黑客作为解决办法;在setTimeout:内对嵌入的BorderContainer调用resize:。但我不希望依赖Dojo/Dijit中的另一种方法将标记分割成更小的文件,这些文件可以包含布局小部件?据我所知,没有任何支持。即使使用bRIMOs解决方案,您也可能会遇到“调整大小”事件问题,这可以通过丑陋的窗口调整处理程序来解决。理想情况下,您要么将所有布局装饰性地放在前面,要么将小部件中的布局替换为标准的“响应式”设计。@LewisM是的,但编程不需要调整大小事件!它被正确地渲染了,不是吗?谢谢刘易斯。对于a,在我的情况下并不适用,而对于b,dojo/dijit中对我有吸引力的是小部件,因为我正试图模拟桌面应用程序Tanks bRIMOs供您参考,布局确实很好,但当我在内容窗格中添加其他内容时,我对模板有其他问题,我想这与生命周期有关