[英]CQ5 AEM: how to get a component by name within a dialog using javascript
我知道这可能是一个简单的问题,但总体来说我是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位于基于组件的ClientLib中。
这是我在复选框下定义的Listener中的SHOW值的侦听器(工作正常)。
<listeners
jcr:primaryType="nt:unstructured"
loadcontent="function(field,rec,path){Ejst.toggleRowTitle(field);}"
selectionchanged="function(field,value){Ejst.toggleRowTitle(field);}"/>
如果您对此有任何疑问,请告诉我。
提前欣赏
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
}
几天前我做了类似的事情,我的解决方案是在组件的相同级别上以相同的组件名称创建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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.