嗨下面是我的代码用作按钮的监听器。
function(comp, evt , record, path) {
var str=document.URL;
var test=str.replace("http://localhost:4502","");
var a=test.split("\.");
var path=a[0]+"/jcr:content";
var dialog = this.findParentByType('dialog');
panel=comp.findParentByType('panel');
alert("panel :: "+panel);
var feedurl = panel.getComponent("Url");
alert(feedurl);
}
Feedurl始终显示未定义。 Url是隐藏的窗口小部件的itemId。下面是dialog.xml
<basic
jcr:primaryType="nt:unstructured"
title="Basic"
xtype="panel">
<items jcr:primaryType="cq:WidgetCollection">
<rootPath
jcr:primaryType="cq:Widget"
fieldLabel="Target Path"
name="./youtubepolling/rootPath"
root="/content/dam"
xtype="pathfield"/>
<btnpanel
jcr:primaryType="cq:Widget"
border="{Boolean}false"
xtype="panel">
<items jcr:primaryType="cq:WidgetCollection">
<connectbutton
jcr:primaryType="cq:Widget"
localName="connectButton"
style="float:right;"
text="Connect to Youtube"
xtype="button">
<listeners
jcr:primaryType="nt:unstructured"
click="function(comp, evt , record, path) { //js code defined above }"/>
</connectbutton>
</items>
</btnpanel>
<feedUrl1
jcr:primaryType="cq:Widget"
ignoreData="true"
itemId="Url"
name="./youtubepolling/feedUrl"
value=""
xtype="hidden"/>
</items>
</basic>
在这个层次结构之上就像:
dialog
&gt; widgetCollections
&gt; tabpanel
&gt; widgetcollections
&gt; panel(basic)
答案 0 :(得分:0)
根据widget docs,itemId
是在没有对象引用可用时获取对组件的引用的替代方法,并且与需要唯一的CQ.Ext.getCmp()
不同ID。
还观察到,当我们使用itemId
时,id不被设置为输入字段,而是使用CQ生成的Id。另一方面,使用id
属性将给定的id设置为输入字段。
此外,使用comp.findParentByType('panel');
返回一个面板数组,从最近的面板开始。由于该面板中不存在feedurl,因此panel.getComponent("Url");
尝试修改JS,如下所示,并使用id
代替itemId
feedUrl1
function(comp, evt , record, path) {
var str=document.URL;
var test=str.replace("http://localhost:4502","");
var a=test.split("\.");
var path=a[0]+"/jcr:content";
var dialog = comp.findParentByType('dialog');
var feedurl = dialog.findById("Url");
console.log(feedurl);
feedurl.setValue(path);
}