我想知道,如果有人因我的一个开发问题而对我有所了解(确定你这么做;-))。
我尝试使用带有动态Dojo Tab窗格的“Dojo Tab容器”。
<xp:div id="tabs">
<xe:djTabContainer id="djTabContainer1" tabPosition="top"
style="height:250px;width:500px" defaultTabContent="defTab">
<xp:this.facets>
<xe:djTabPane xp:key="defTab" id="myTab" partialEvents="true" closable="true">
<xp:panel>
<xp:label value="#{javascript:getComponent('myTab').getTitle()}"></xp:label>
</xp:panel>
</xe:djTabPane>
</xp:this.facets>
</xe:djTabContainer>
</xp:div>
然后有一个SSJS(按钮)事件来添加标签(实际上动作更复杂,以计算标题等,但这应该解释):
var cont:com.ibm.xsp.extlib.component.dojo.layout.UIDojoTabContainer = getComponent('djTabContainer1');
cont.createTab({id:'tab1', tabUniqueKey:'tab1', tabTitle:'tab1'});
cont.createTab({id:'tab2', tabUniqueKey:'tab2', tabTitle:'tab2'});
cont.createTab({id:'tab3', tabUniqueKey:'tab3', tabTitle:'tab3'});
现在我想以编程方式切换(打开)到另一个选项卡,或关闭选项卡。在这里找到有用的例子非常困难。
我发现,我可以通过 cont.setSelectedTab(' 2 ')以编程方式切换到另一个标签,而不是 cont.setSelectedTab(' tab2 ') - 正如我所料。出于某种原因, tabUniqueKey 参数被完全忽略,而 tabTitle 参数则不被忽略。更糟糕的是:看起来所有createTab() - 参数都被忽略,但tabTitle除外。
是否有一种优雅的方式来获取选项卡窗格组件? getComponent('tab2')不起作用。 “ id:'tab2'”和“ tabUniqueKey:'tab2'”均未考虑在内。我可以使用 getComponent('myTab')获取 标签,但如果所有标签都具有相同的ID,则完全没用。
所以,
也没有var cont:com.ibm.xsp.extlib.component.dojo.layout.UIDojoTabContainer = getComponent('djTabContainer1');
var tabSel:com.ibm.xsp.extlib.component.dojo.layout.UIDojoTabPane = comp.selectTab('tab2');
,也不
var tabSel:com.ibm.xsp.extlib.component.dojo.layout.UIDojoTabPane = comp.setSelectedTab('tab2');
至少我正在寻找的东西类似于:
cont.closeTab('tab3'); // to close tab3
答案 0 :(得分:1)
createTab()
返回一个UIDojoTabPane窗格对象,您可以使用它来选择之后创建的选项卡:
var cont:com.ibm.xsp.extlib.component.dojo.layout.UIDojoTabContainer = getComponent('djTabContainer1');
var paneTab1:com.ibm.xsp.extlib.component.dojo.layout.UIDojoTabPane = cont.createTab({id:'tab1', tabUniqueKey:'tab1', tabTitle:'tab1'});
...
cont.setSelectedTab(paneTab1.getTabUniqueKey());
您也可以使用此窗格对象关闭选项卡:
paneTab1.closeTab()