CQ5 AEM:如何使用javascript在对话框中按名称获取组件

Ali*_*aky 4 javascript extjs aem

我知道这可能是一个简单的问题,但我是CQ5和AEM的新手.

我有一个cq:Widget节点,它是一个简单的文本字段.

 <rowtitlevalue
     jcr:primaryType="cq:Widget"
     fieldLabel="Row Title Value"
     name="./rowtitlevalue"
     xtype="textfield"
     disabled="true"/>
Run Code Online (Sandbox Code Playgroud)

现在,在我的JavaScript中,我正在通过它访问它

var textfield = panel.findByType('textfield')[1];
Run Code Online (Sandbox Code Playgroud)

哪个工作正常(在此之前还有另一个文本字段,因此数组中的1.

我的问题:如何在我的javascript中使用它的NAME属性查找此字段.

任何帮助,将不胜感激.

另外,我正在使用此对象运行以下内容:

if (show != undefined) {
    textfield.enable();
    textfield.show();
}
else if (show == undefined) {
    textfield.disable();
    textfield.hide();
}
Run Code Online (Sandbox Code Playgroud)

JavaScript位于基于组件的ClientLibs中.

这是我在javascript中定义SHOW值的复选框下的监听器(工作正常).

<listeners
jcr:primaryType="nt:unstructured"
loadcontent="function(field,rec,path){Ejst.toggleRowTitle(field);}"
selectionchanged="function(field,value){Ejst.toggleRowTitle(field);}"/>
Run Code Online (Sandbox Code Playgroud)

如果您发现任何问题,请告诉我.

提前欣赏它

rak*_*110 10

所述CQ.Dialog API定义getField( String name),它返回一个字段具有给定名称的方法.如果存在多个具有相同名称的字段,则返回这些字段的数组.

因此,找到xtype的父代dialog而不是panel如下所示将解决这个问题.

Ejst.toggleRowTitle = function(checkbox) {
    var dlg = checkbox.findParentByType('dialog');
    var rowTitleField = dlg.getField('./rowtitlevalue');
    // perform required operation on rowTitleField
}
Run Code Online (Sandbox Code Playgroud)