Extjs AEM自定义小部件::动态添加fieldLabel和fieldDescription

Extjs AEM自定义小部件::动态添加fieldLabel和fieldDescription,extjs,aem,Extjs,Aem,我已经创建了一个自定义小部件。下面给出了代码片段 this.word = new CQ.Ext.form.TextField({ fieldLabel: "Word", fieldDescription: "Please enter a word in the format: Word", allowBlank: false, autoWidth: false, // regex: /^[A-Z][a-zA-Z\s]+$/, // regexText: 'Enter only

我已经创建了一个自定义小部件。下面给出了代码片段

this.word = new CQ.Ext.form.TextField({
  fieldLabel: "Word",
  fieldDescription: "Please enter a word in the format: Word",
  allowBlank: false,
  autoWidth: false,
 // regex: /^[A-Z][a-zA-Z\s]+$/,
 // regexText: 'Enter only alphabets here.First character has to be an alphabet in uppercase.',
  listeners: {
    change: {
      scope: this,
      fn: this.updateHidden
    }
  }
});
小部件工作正常。我还有另外一个要求,在功能方面与此类似。唯一不同的是fieldLabel和fieldDescription的值。我不认为为此创建另一个小部件是一个好主意。有什么办法可以让这两个动态的

仅供参考,我正在使用AEM 6


提前感谢

您可以使用侦听器并动态更改值。我在活动中尝试过,它似乎起了作用

this.word = new CQ.Ext.form.TextField({
 fieldLabel: "Word",
 fieldDescription: "Please enter a word in the format: Word",
 allowBlank: false,
 autoWidth: false,
 // regex: /^[A-Z][a-zA-Z\s]+$/,
 // regexText: 'Enter only alphabets here.First character has to be an alphabet in uppercase.',
 listeners: {
   change: {
     scope: this,
     fn: this.updateHidden
   },
   added: function(textfield,ownerct,index){
    if(//some condition here){
      textfield.fieldLabel = "new field label",
      textfield.fieldDescription = "new field description"
     } 
   }
 }
});

如果您想对不同的组件使用相同的小部件,并且每个组件必须具有唯一的字段(对于您-fieldLabel和fieldDescription)

试试这个:

var label = this.fieldLabel;
var description = this.fieldDescription;

this.word = new CQ.Ext.form.TextField({
    fieldLabel: (label || label == '') ? label : "Word",
    fieldDescription: (description || description == '') ? description : "Please enter a word in the format: Word",
    allowBlank: false,
    autoWidth: false,
    // regex: /^[A-Z][a-zA-Z\s]+$/,
    // regexText: 'Enter only alphabets here.First character has to be an alphabet in uppercase.',
    listeners: {
        change: {
            scope: this,
            fn: this.updateHidden
        }
    }
});
“this.fieldLabel”-从使用小部件的组件对话框中获取新值“fieldLabel”:

...
fieldLabel="New Value fieldLabel For Custom Widget"
xtype="yourCustomWidget"/>
...

嘿,莎拉斯,谢谢你的回复。我问这个可能是愚蠢的。但是,如果“added:function..”在JS中,而fieldLabel值(“new field label”)是在JS中设置的,我不确定它是如何使fieldLabel和fieldDescription动态的。再说一遍,我可能听起来很愚蠢或幼稚,但ExtJs并不是我的强项。如果你能在这里做一点手工操作,我将不胜感激。谢谢。您想什么时候更改字段标签和描述?这些值是预先确定的吗?我正在考虑将fieldLabel和fieldDescription定义为组件的属性。i、 e.将这两个属性分配给cq:组件。你有什么建议?