2015-02-06 58 views
0

我创建了一个自定义控件。下面给出的是代码片段AEM自定义控件::动态添加fieldLabel和fieldDescription

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.

在此先感谢

回答

0

您可以使用监听器和动态更改的值。我尝试了added事件,它似乎工作。

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" 
    } 
    } 
} 
}); 
+0

嘿Sharath,谢谢你的回应。我可能会问这个问题。但是如果'added:function ..'进入JS内部并且在JS本身中设置了fieldLabel值(“new field label”),我不知道它是如何使fieldLabel和fieldDescription变为动态的。再一次,我可能听起来很愚蠢或天真,但那时ExtJs不是我的特长。如果你能在这里做一些小小的手工操作,我们将不胜感激。谢谢。 – user972418 2015-02-06 15:25:53

+0

您想更改字段标签和说明吗?预定值是什么? – 2015-02-06 15:37:57

+0

我正在考虑将fieldLabel和fieldDescription定义为组件的属性。即将这两个属性分配给cq:Component。你有什么建议? – user972418 2015-02-06 16:17:46

0

如果你想使用相同的部件不同的部件,并为每个组件都必须是唯一的字段(您 - 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 
     } 
    } 
}); 

“这.fieldLabel“ - 从组件的对话框中获取新值”fieldLabel“,您可以在其中使用widget:

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