我知道这可能是一个简单的问题,但我对CQ5和AEM一般都很陌生。
我有一个cq:Widget节点,它是一个简单的文本字段。
<rowtitlevalue
jcr:primaryType="cq:Widget"
fieldLabel="Row Title Value"
name="./rowtitlevalue"
xtype="textfield"
disabled="true"/>
现在,在我的JavaScript中,我目前正在通过
访问它var textfield = panel.findByType('textfield')[1];
工作正常(在此之前还有另一个文本字段,因此数组中为1。
我的问题: 如何在我的javascript中使用它的NAME属性查找此字段。
任何帮助都将不胜感激。
另外,我使用此对象运行以下内容:
if (show != undefined) {
textfield.enable();
textfield.show();
}
else if (show == undefined) {
textfield.disable();
textfield.hide();
}
JavaScript位于基于组件的ClientLibs中。
这是我在javascript中定义SHOW值的复选框下的监听器(工作正常)。
<listeners
jcr:primaryType="nt:unstructured"
loadcontent="function(field,rec,path){Ejst.toggleRowTitle(field);}"
selectionchanged="function(field,value){Ejst.toggleRowTitle(field);}"/>
如果您发现此问题,请与我们联系。
提前感谢
答案 0 :(得分: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
}
答案 1 :(得分:1)
js
文件,并使用我需要的信息使用相同的组件名称。
像这样的东西:
该文件将被称为rowtitlevalue.js
,内容将是:
"use strict";
use(function() {
var data = {};
data.rowtitlevalueData = properties.get("rowtitlevalue");
//more properties if needed...
return {
data: data
}
});
然后我需要在javascript中使用它,我需要以下标签:
<sly data-sly-use.data="rowtitlevalue.js">
<script type="text/javascript">
var myVariable = ${data.rowtitlevalueData};
</script>
</sly>