dijit.layout.StackContainer大小到第一个孩子

时间:2012-10-02 20:11:56

标签: javascript dojo dijit.layout

我是dojo的完整新手,但不是JavaScript。

我正在测试功能并尝试构建一个基本的dijit.layout.StackContainer(以声明方式和编程方式)。我所拥有的是我的堆栈容器根据第一个子元素的大小调整大小。我想要的是根据我放置的元素的大小来确定它的大小。我怎样才能做到这一点?我查看了参考指南,API文档等,但似乎没有任何帮助。 :(

提前致谢

我能够让它工作的唯一方法是在我希望附加我的StackContainer的元素上定义height属性,然后在声明StackContainer的style属性时手动查找height属性。像这样......

<div id="content" style="height: 100%; background-color: green;"></div>
<script>
    var domNode, controller, container;
    domNode = document.getElementById('content');
    controller = new StackController({
        containerId:"mainStack"
    }).placeAt(domNode);
    container = new StackContainer({
        id: "mainStack",
        isLayoutContainer: true,
        style: "background-color: yellow; height: "+domNode.style.height
    });
    container.addChild(new ContentPane({
        title: "Search for Images...",
        tooltip: "Click here to begin your search.",
        content: searchTemplate
    }));
    container.addChild(new ContentPane({
        title: "View Results..",
        tooltip: "After you search for a topic, click here to view your results.",
        content: resultTemplate
    }));
    container.placeAt(domNode);

    container.startup();
    controller.startup();
</script>

这很有效,但由于缺乏道场经验,我感觉自己就像是黑客。有没有人有任何想法或建议?

1 个答案:

答案 0 :(得分:0)

您希望将StackContainer上的doLayout属性设置为false。根据{{​​3}}:

doLayout
Defined by dijit/layout/StackContainer
If true, change the size of my currently displayed child to match my size

这相当于

container = new StackContainer({
   id: "mainStack",
   isLayoutContainer: true,
   style: "background-color: yellow;",
   doLayout:false
});

孩子们可能还需要doLayout:false