/ / Dojo - Agregar dijit a un TitlePane cerrado - javascript, dojo

Dojo - Agregar dijit a un TitlePane cerrado - javascript, dojo

Cuando la propiedad abierta de TitlePane se establece en false, no puedo agregar widgets dinámicamente al contenido.

Por ejemplo, el siguiente código no funciona.

var tp = new dijit.TitlePane({
title: "Title Pane"
, content: ""
, open: false
})

var tabs = new dijit.layout.TabContainer({
region:"center"
, content:"Service Details"
, tabStrip: true
}).placeAt(tp.containerNode);

Pero cuando la propiedad abierta se establece en true, aparece el contenedor de pestañas.

var tp = new dijit.TitlePane({
title: "Title Pane"
, content: ""
, open: true
})

var tabs = new dijit.layout.TabContainer({
region:"center"
, content:"Service Details"
, tabStrip: true
}).placeAt(tp.containerNode);

¿Cómo puedo agregar widgets a TitlePane cuando la propiedad abierta se establece en falso?

Respuestas

3 para la respuesta № 1

Estas seguro de que estas llamando startup ¿correctamente en tus widgets creados mediante programación? Lo siguiente funciona para mí si open es true o false:

dojo.require("dijit.TitlePane");
dojo.require("dijit.layout.TabContainer");
dojo.require("dijit.layout.ContentPane");
dojo.ready(function() {
var tp = new dijit.TitlePane({
title: "Title Pane",
content: "",
open: false
}).placeAt(dojo.body());


var tabs = new dijit.layout.TabContainer({
region: "center",
content: "Service Details",
tabStrip: true
}).placeAt(tp.containerNode);
tabs.startup();
tabs.addChild(new dijit.layout.ContentPane({
title: "foo", content: "bar"
}));

//putting this after adding the tabcontainer
//avoids problems when open is initially true
tp.startup();
});

Para aclarar en llamar startup:

En general, cada vez que usted crea un widget programáticamente, necesita llamar manualmente su startup. Sin embargo...

La excepción general a esto es cuando se trata de elementos secundarios de contenedores o widgets de diseño (en este caso dijit.TitlePane que se extiende dijit.layout.ContentPane, que se comporta como un widget de diseño) - estos buscan niños para llamar startup cuando se inician ellos mismos (o en el caso de ContentPane, también cuando se establece / carga nuevo contenido).

Widgets de contenedor (no ContentPane, pero por ejemplo BorderContainer, StackContainer y sus subclases como AccordionContainer y TabContainer) también llamada startup en niños añadidos después de que el contenedor ya está iniciado.