这是我要创建的小部件。目标是让 stackContainer 由顶部的单选按钮控制。
我已经尝试过 dojo 文档中的示例,但它具有相同的错误行为。
define(["dojo/ready", "dojo/_base/declare", "dijit/_WidgetBase", "dojo/dom-construct",
"dojo/_base/lang", "dojo/on", "dojo/dom-attr", "dijit/form/RadioButton",
"dojo/dom-style", "dijit/layout/ContentPane", "dijit/layout/StackContainer",
"tcs/Log"],
function(ready, declare, _WidgetBase, domConstruct,
lang, on, attr, RadioButton,
style, ContentPane, StackContainer,
log) {
/**
* @class
* @name gijit.workflow.debug.combi
*/
return declare("gijit.workflow.debug.combi", [_WidgetBase], {
workflow : null,
panes : null,
width : "600px",
height : "400px",
_beforeCall : function(d) {
alert("beforeCall");
},
buildRendering : function() {
this.domNode = domConstruct.create("div", {id:"myform"});
var contain = domConstruct.create("div", null, this.domNode, "last");
var stackContainer = new StackContainer({
style: "height: " + this.height + "; width: " + this.width + "; border: 0px solid red"
}, contain);
var buttons = domConstruct.create("form", null, this.domNode, "first");
for(var i=0; i<this.panes.length; i++){
var contentPane = new ContentPane({
id : this.panes[i].title,
title : this.panes[i].title,
content : this.panes[i].content
})
stackContainer.addChild(contentPane);
var buttonDiv = domConstruct.create("span", null, buttons, "last");
style.set(buttonDiv, "display", "inline-block");
style.set(buttonDiv, "margin", "10px");
var label = domConstruct.create("div", {innerHTML: this.panes[i].title}, buttonDiv, "last");
if(i==0){
var RButton = new RadioButton({
title : this.panes[i].title,
showTitle : true,
checked : true,
value : this.panes[i].title,
name : "options",
onClick : function(a){stackContainer.selectChild(a.explicitOriginalTarget.attributes.value.textContent)}
}).placeAt(buttonDiv);
} else {
var RButton = new RadioButton({
title : this.panes[i].title,
showTitle : true,
checked : false,
value : this.panes[i].title,
name : "options",
onClick : function(a){stackContainer.selectChild(a.explicitOriginalTarget.attributes.value.textContent)}
}).placeAt(buttonDiv);
}
contentPane.resize();
contentPane.startup();
}
stackContainer.startup();
//Hacks in attempt to get the stuff to show
for(var i=0; i<stackContainer.getChildren().length; i++){
stackContainer.getChildren()[i].startup();
stackContainer.getChildren()[i].resize();
if(typeof stackContainer.getChildren()[i].getChildren()[0] === 'object'){
stackContainer.getChildren()[i].getChildren()[0].startup();
}
}
stackContainer.resize();
},
});
});
在大多数情况下,它有效。但是为了显示任何东西,我必须调整窗口大小。所有的调整大小/启动调用都是在它最初不起作用之后添加的,但它们都没有做任何事情。