我在对话框的loadContent上有监听器,我想从中访问特定的小部件。以下是代码:
loadContent : function(dialog)
{
var pan1 = dialog.findById("layout1");
pan1.hide();
console.log("pan1 ::: "+pan1); //gives null
}
以下是对话框中的项目:
<items
jcr:primaryType="cq:Widget"
xtype="tabpanel">
<items jcr:primaryType="cq:WidgetCollection">
<panel1
jcr:primaryType="cq:Panel"
title="Slide">
<items jcr:primaryType="cq:WidgetCollection">
<one
jcr:primaryType="cq:Widget"
fieldLabel="one"
itemId="layout2"
name="./one"
type="checkboxgroup"
xtype="selection">
<options jcr:primaryType="cq:WidgetCollection">
</options>
</one>
<two
jcr:primaryType="cq:Widget"
fieldLabel="two"
itemId="layout1"
name="./two"
type="checkboxgroup"
xtype="selection">
<options jcr:primaryType="cq:WidgetCollection">
</options>
</two>
</items>
</panel1>
</items>
我希望在特定条件下隐藏特定选项。所以首先需要访问checkboxgroup。有什么想法吗?
答案 0 :(得分:1)
不熟悉findById
方法 - 您确定它正在寻找&#34; itemId&#34;?
您也可以使用getField(…)
方法:
var pan1 = dialog.getField("./two");
/* Not sure above why the field with name "two" has an ID of "one"? Typo? */
您可能还想为selectionchanged
添加一个侦听器,以便在加载后更改下拉列值时显示这些部分。
答案 1 :(得分:1)
请尝试使用id
的{{1}},instead
。
我曾尝试过类似的问题,并使用了id。
答案 2 :(得分:0)
从小部件API开始: -
findById(String id):CQ.Ext.Component 不推荐使用:相当无用的方法,因为你可以只使用CQ.Ext.getCmp。应该删除4.0 通过id
在任何级别查找此容器下的组件你可以宁愿使用 dialog.find( 'somepropertylikeId', 'valueOfthatPropertyLikeLayout2')[0];