#aem
#аэм
Вопрос:
Привет, Ниже приведен мой код, используемый в качестве прослушивателя для кнопки.
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 всегда показывает undefined. Url — это идентификатор элемента виджета, который скрыт. Ниже приведен следующий 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
> widgetCollections
> tabpanel
> widgetcollections
> panel(basic)
Ответ №1:
Согласно документам виджета, itemId
это альтернативный способ получить ссылку на компонент, когда ссылка на объект недоступна, и это не то же CQ.Ext.getCmp()
самое, что для которого требуется уникальный идентификатор.
Также замечено, что при использовании itemId
идентификатор не устанавливается в поле ввода, а вместо него используется идентификатор, сгенерированный CQ. С другой стороны, использование id
свойства устанавливает заданный идентификатор в поле ввода.
Кроме того, using comp.findParentByType('panel');
возвращает массив панелей, начиная с ближайшей панели. Поскольку feedurl не существует в этой панели, он всегда будет возвращать undefined для 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);
}
Комментарии:
1. Спасибо, я получил объект, теперь я пытаюсь установить свойство value этого объекта с помощью: feedurl.value=path; alert(«feed :: » feedurl.value); alert показывает мне значение, которое я хочу установить, но внутри узла оно не устанавливается по-прежнему пустым.
2. Попробуйте
setValue()
метод. Пожалуйста, найдите мой ответ отредактированным.3. Пробовал, я вижу, что на вкладке network параметр отображается (name amp; value), но свойство value для этого виджета остается пустым.