Aem 在cq5小部件中,根据对话框中的复选框隐藏和显示

Aem 在cq5小部件中,根据对话框中的复选框隐藏和显示,aem,Aem,我有一个实现,其中我的单选按钮组必须根据复选框显示和隐藏。我刚刚包括了一个Cq:panel,其中包含一个复选框和一个单选按钮组(其中包含两个单选按钮)的小部件。我在jsp中获取这些值并进行相应的操作。我的问题是,当作者选中/取消选中复选框时,我是否可以显示/隐藏此单选按钮组,因为单选按钮组依赖于复选框。如果选中复选框时隐藏此组,我会感到高兴。我已经浏览了api,但找不到。谁能帮我一下吗。提前感谢。是的,您可以通过将侦听器附加到选中复选框时触发的selectionchanged事件来实现这一点。提

我有一个实现,其中我的单选按钮组必须根据复选框显示和隐藏。我刚刚包括了一个Cq:panel,其中包含一个复选框和一个单选按钮组(其中包含两个单选按钮)的小部件。我在jsp中获取这些值并进行相应的操作。我的问题是,当作者选中/取消选中复选框时,我是否可以显示/隐藏此单选按钮组,因为单选按钮组依赖于复选框。如果选中复选框时隐藏此组,我会感到高兴。我已经浏览了api,但找不到。谁能帮我一下吗。提前感谢。

是的,您可以通过将侦听器附加到选中复选框时触发的
selectionchanged
事件来实现这一点。提供将为小部件触发的公共事件列表

为了将侦听器附加到事件,您需要在所需的小部件下创建一个类型为nt:unstructured的节点,称为
listeners
,并将事件名称作为属性添加到节点,该节点的值将是您要执行的处理程序函数

在您的情况下,属性应该是
selectionchanged
,它的值应该是满足您需求的函数,类似这样

function(comp, val, isChecked) {
    var panel = comp.findParentByType("panel"); //find the parent panel container
    var rdg = panel.getComponent("rdg"); //find the component with itemId rdg

    /*hide or show component based on checked value */
    isChecked ? rdg.hide() : rdg.show(); 
}
面板中对话框的结构如下所示

<dialog jcr:primaryType="cq:Dialog" title="Test Component" xtype="panel">
    <items jcr:primaryType="cq:WidgetCollection">
        <chkbox jcr:primaryType="cq:Widget" fieldLabel="Show radio buttons" name="./show" type="checkbox" xtype="selection">
            <listeners jcr:primaryType="nt:unstructured" selectionchanged="function(comp, val, isChecked) { 
                var panel = comp.findParentByType("panel"); 
                var rdg = panel.getComponent("rdg"); 
                isChecked ? rdg.show() : rdg.hide(); 
            }"/>
        </chkbox>
        <link jcr:primaryType="cq:Widget" fieldLabel="Select one" itemId="rdg" name="./rad" type="radio" xtype="selection">
            <options jcr:primaryType="cq:WidgetCollection">
                <radio1 jcr:primaryType="cq:Widget" text="Yes" value="T"/>
                <radio2 jcr:primaryType="cq:Widget" text="No" value="F"/>
            </options>
        </link>
    </items>
</dialog>


我没有创建用于放置单选按钮的单选组,而是创建了两个名称相同的单选按钮,并分别为它们添加了inputValue 1和2,并将xtype设置为radio。由于我是cq的新手,请让我知道如何为具有属性的单选按钮添加组。你能提供一些教程或者很好的参考资料来学习cq中的小部件吗?我使用radio group是因为你在问题中提到了。我现在使用xtype selection修改了答案。关于CQ5小部件,您找不到多少。因此,文件很差。但是我建议学习Extjs,它可能会帮助您使用这个.var rdg=panel.getComponent(“rdg”)//找到itemId为rdg的组件…你能告诉我这里的itemId是什么吗。itemId是我给Radio小部件的id。检查链接标记
函数(comp,val,isChecked){var panel=comp.findParentByType(“panel”);var rdg=panel.getComponent(“text”);isChecked?rdg.show():rdg.hide();}我尝试过使用这个函数,但这是我第一次打开对话框,但没有触发侦听器。这意味着默认情况下,复选框处于未选中状态,此时我可以看到小部件(单选按钮),但当我选中该复选框并取消选中它时,它将正常工作。还有一件事,它隐藏了按钮,但没有字段标签。提前谢谢