使用ExtJS在CQ5中获取对话框加载时下拉小部件的值

使用ExtJS在CQ5中获取对话框加载时下拉小部件的值,extjs,aem,Extjs,Aem,我有一个对话框,选项卡中有一个下拉(name=“number”,xtype=“selection”)小部件。加载对话框时,我需要获取此下拉列表中的值以显示/隐藏另一个选项卡 两个选项卡位于同一对话框中(xtype=“tabpanel”) 我尝试在第二个选项卡(需要隐藏/显示)中添加一个ExtJS代码作为“侦听器”,但没有成功: <listeners jcr:primaryType="nt:unstructured" rende

我有一个对话框,选项卡中有一个下拉(name=“number”,xtype=“selection”)小部件。加载对话框时,我需要获取此下拉列表中的值以显示/隐藏另一个选项卡

两个选项卡位于同一对话框中(xtype=“tabpanel”)

我尝试在第二个选项卡(需要隐藏/显示)中添加一个ExtJS代码作为“侦听器”,但没有成功:

<listeners
                jcr:primaryType="nt:unstructured"
                render="function() {alert(this.findParentByType('tabpanel').getFieldValues('number')); }"/>

如果您查看OOB列表组件,它具有您想要的功能。 它为下拉选择实现两个侦听器,下拉选择包含要显示哪个选项卡的不同选项:

听众

加载内容->

function(){
    this.findParentByType('tabpanel').manageTabs(this.getValue(),true);
}
选择已更改->

function(box,value){
    box.findParentByType('tabpanel').manageTabs(value);
}
每当选择更改时,它将使用所选值管理选项卡,当内容更改时,它也将执行此操作 已加载,因此您不必一直更改值,更改才会生效

您还将看到实际的选项卡,以及它们正在实现用于呈现的侦听器:

渲染->

function() { 
    //The different panels will have to have the index corresponsing to their order in the node structure
    this.findParentByType('tabpanel').hideTabStripItem( 'the index for the tab' ); 
}
最后,要使其工作,主选项卡面板需要将函数“manageTabs”定义为属性:

function(tab,noSwitch){
    //Here you will have to specify the different node names for the panels
    var tabs=['tab1','tab2','tab3',....,'tab n']; 
    var index=tabs.indexOf(tab);
    if(index==-1) return;
    for(var i=1;i<tabs.length;i++){
        if(index==i){
            this.unhideTabStripItem(i);
        }else{
            this.hideTabStripItem(i);
        }
    }
    this.doLayout();if(!noSwitch)this.activate(index);
}
功能(选项卡,无开关){
//在这里,您必须为面板指定不同的节点名称
变量tabs=['tab1'、'tab2'、'tab3'、..、'tabn'];
var指数=tabs.indexOf(tab);
如果(索引==-1)返回;

对于(var i=1;我可以发布整个对话框吗?