TabContainer가 있습니다. 여기에 ContentPanels을 추가합니다. 내 요구 사항은, 나는이 TabContainer (ContentPanels의 다른 내용)를 매번 다시로드해야한다고 가정합니다. 동일한 페이지의 아약스에서 생성 된 그리드의 새 행을 클릭합니다. 처음에는 id가 이미 등록되어있는 문제가 발생했을 때 여기에 나온 대답 중 하나에서 제안한 것처럼 destroyRecursive를 사용했습니다. 이제 그 결과를 얻은 후 다음 결과를 얻었습니다.id 이미 등록 된 도장
결과 행을 클릭 한 후 처음으로 컨테이너와 3 개의 내용 창과 함께 원하는 결과를 얻었습니다.
행, 두 번째 시간 및 다른 시간 중 하나를 클릭하면 결과가 표시됩니다. 3 개의 내용 창이있는 새 컨테이너는 3 개의 내용 창이있는 이전 컨테이너 위에 배치됩니다. 아무리 많은 클릭 만해도 결과에는 항상 2 개의 컨테이너가 있으며 새 컨테이너는 이전 컨테이너 위에 배치됩니다.
다음은 코드입니다.
<div id = "tabsContainer">
<div id="tabPanels" data-dojo-type = "dijit/layout/TabContainer"></div>
</div>
function getTabPanelsForTheRow() {
require(["dijit/layout/TabContainer",
"dijit/layout/ContentPane"], function (TabContainer, ContentPane) {
var tc = new TabContainer({}, "tabPanels");
var cp1 = new ContentPane({
title: "Contacts",
content: "These are the activities"
});
tc.addChild(cp1);
var cp2 = new ContentPane({
title: "Activities",
content: "These are the activities"
});
tc.addChild(cp2);
var cp3 = new ContentPane({
title: "Opportunities",
content: "We are known for our drinks."
});
tc.addChild(cp3);
tc.startup();
});
}
function destroyTabPanel() {
require(["dijit/layout/TabContainer"], function (TabContainer) {
var tp = dijit.byId("tabPanels");
tp.destroyRecursive(true);
});
}
매번, I 행을 클릭 I가 destroyTabPanel 호출 M() 우선, 다음 I는 getTabPanelsForTheRow 호출 M().
고마워요. 나는 당신의 첫 번째 제안과 함께 필요한 결과를 얻었다. 나는 도장을 처음 사용하므로 두 번째 제안을 할 수 없습니다. 그건 그렇고, 나는 이것을 시도 : 'function destroyTabPanel() { require ([ "dijit/layout/TabContainer", "dojo/dom-construct"], function (TabContainer) { var elem = dijit.byId (" tabPanels "); if (elem.hasChildren()) { domConstruct.empty ("tabPanels "); } }}); } ' – Sandy
다른 함수에서는 새 TabContainer를 만드는 대신 dijit.byId ("tabPanels")를 직접 말하고 나머지는 동일합니다. 내가 이것을 좋아했을 때 나는 처음으로 패널을 만들 수있었습니다. 시간의 휴식, 나는 아무 것도 표시하지 않고있다. – Sandy
dijit._widgetBase를 확장하는 자신의 위젯을 정의 할 수 있습니다.이 위젯은 컨테이너 'div'에 선언됩니다. 위젯 자체는 TabContainer와 패널을 인스턴스화하여 배열이나 객체의 패널에 대한 참조를 저장합니다. 그런 다음 페이지로드시이 위젯을 인스턴스화합니다. 그런 다음 이벤트 리스너를 변경하거나 위젯을 직접 참조하고 "updatePanels"등의 사용자 정의 메소드를 호출하거나 dojo의 pub/sub 기능을 사용하고 위젯이 등록한 요청을 게시 할 수 있습니다. 내가 원한다면 예를 보낼 수 있습니다 ... –