2015-02-06 24 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"/> 
...