如何捕获我的 dojo TabContainer 的 child/nested(子)选项卡的“id”?
How do I capture the `id` of my child/nested (sub) tabs of my dojo TabContainer?
我有一组带有子选项卡的选项卡。单击每个选项卡时,我需要获取每个选项卡的 id
。我首先找到了 dojo
TabContainer
对象中内置的 watch
函数:
myTabContainer.watch("selectedChildWidget", function(name, oval, nval){
console.log("selected child changed from ", oval, " to ", nval);
});
这适用于父标签,但不适用于 child/nested 子标签。我唯一的线索是子选项卡是 ContentPane
个对象而不是 TabContainer
个对象。
我也试过这个,它也只适用于父标签:
var tcmainid = tcmain.id;
dojo.connect(dijit.byId(tcmainid), "selectChild", function(page){console.log("Page ID: " + page.id)});
这是我的标签创建代码:
var tcmain = new TabContainer({doLayout: false}, 'htmlDDIVid');
var parentTab1 = new ContentPane({title: "Tab1", content: gridx1});
var parentTab2 = new TabContainer({title: "Tab2", doLayout: false, nested: true});
var parentTab2SubTab1 = new ContentPane({title: "SubTab1", content: sub1Gridx});
var parentTab2SubTab2 = new ContentPane({title: "SubTab2", content: sub2Gridx});
parentTab2.addChild(parentTab2SubTab1);
parentTab2.addChild(parentTab2SubTab2);
tcmain.addChild(parentTab1);
tcmain.addChild(parentTab2);
如何为我的 child/nested 子标签获取 id
?
我明白了。我尝试了几种不同的方法,但只有这一种方法适用于子选项卡。这是我的解决方案:
使用:
"dijit/registry",
"dojo/on",
在我的道场 require
声明中。
myGridxID
是存在于我的 HTML 页面的 DIV 中的 TabContainer
id有 gridx
.
// Pickup the onClick and get the ID of the tab or sub tab being clicked, this is used in the case switch statement for updating the grid accordingly
var tabContainerPanel = registry.byId('myGridxID'); //get dijit from its source dom element
on(tabContainerPanel, "Click", function (event) {
selectedTabString = tabContainerPanel.selectedChildWidget.title;
if (typeof tabContainerPanel.selectedChildWidget.selectedChildWidget !== 'undefined'){
// There are no child tabs, parent tab only
selectedTabString = tabContainerPanel.selectedChildWidget.selectedChildWidget.title;
}
然后我 运行 遇到的问题是点击是针对 gridx 中的当前选项卡进行的。我用 if 语句绕过了这个:
if (selectedTabString !== prevSelectedTabString){
检查并查看我当前点击的 gridx
是否与我刚刚选择的那个相同,然后它忽略点击或者我应该说忽略我在选项卡时的代码点击。当在我的代码中单击一个选项卡时,我会更新该选项卡 Gridx。
我有一组带有子选项卡的选项卡。单击每个选项卡时,我需要获取每个选项卡的 id
。我首先找到了 dojo
TabContainer
对象中内置的 watch
函数:
myTabContainer.watch("selectedChildWidget", function(name, oval, nval){
console.log("selected child changed from ", oval, " to ", nval);
});
这适用于父标签,但不适用于 child/nested 子标签。我唯一的线索是子选项卡是 ContentPane
个对象而不是 TabContainer
个对象。
我也试过这个,它也只适用于父标签:
var tcmainid = tcmain.id;
dojo.connect(dijit.byId(tcmainid), "selectChild", function(page){console.log("Page ID: " + page.id)});
这是我的标签创建代码:
var tcmain = new TabContainer({doLayout: false}, 'htmlDDIVid');
var parentTab1 = new ContentPane({title: "Tab1", content: gridx1});
var parentTab2 = new TabContainer({title: "Tab2", doLayout: false, nested: true});
var parentTab2SubTab1 = new ContentPane({title: "SubTab1", content: sub1Gridx});
var parentTab2SubTab2 = new ContentPane({title: "SubTab2", content: sub2Gridx});
parentTab2.addChild(parentTab2SubTab1);
parentTab2.addChild(parentTab2SubTab2);
tcmain.addChild(parentTab1);
tcmain.addChild(parentTab2);
如何为我的 child/nested 子标签获取 id
?
我明白了。我尝试了几种不同的方法,但只有这一种方法适用于子选项卡。这是我的解决方案:
使用:
"dijit/registry",
"dojo/on",
在我的道场 require
声明中。
myGridxID
是存在于我的 HTML 页面的 DIV 中的 TabContainer
id有 gridx
.
// Pickup the onClick and get the ID of the tab or sub tab being clicked, this is used in the case switch statement for updating the grid accordingly
var tabContainerPanel = registry.byId('myGridxID'); //get dijit from its source dom element
on(tabContainerPanel, "Click", function (event) {
selectedTabString = tabContainerPanel.selectedChildWidget.title;
if (typeof tabContainerPanel.selectedChildWidget.selectedChildWidget !== 'undefined'){
// There are no child tabs, parent tab only
selectedTabString = tabContainerPanel.selectedChildWidget.selectedChildWidget.title;
}
然后我 运行 遇到的问题是点击是针对 gridx 中的当前选项卡进行的。我用 if 语句绕过了这个:
if (selectedTabString !== prevSelectedTabString){
检查并查看我当前点击的 gridx
是否与我刚刚选择的那个相同,然后它忽略点击或者我应该说忽略我在选项卡时的代码点击。当在我的代码中单击一个选项卡时,我会更新该选项卡 Gridx。