@ Mchl de answer est une bonne approche pour la fabrication de composants réutilisables, en particulier lorsque vous avez besoin de remplacer ou d'ajouter nouveau comportement à un existant. Si vous avez simplement besoin de réutiliser certains paramètres de configuration et rien de plus, vous pouvez aussi faire quelque chose d'un peu plus simple:
cfg = {
xtype: 'textfield',
width: 100,
maxLength: 10
}
new Ext.FormPanel({
items: [cfg, cfg]
});
Si vous avez besoin d'ajouter des champs de configuration spécifiques à l'instance (comme id par exemple), vous pouvez simplement passer vos valeurs uniques et ajouter la valeur par défaut cfg pour les (applyIf ne remplacera pas les propriétés existantes, il ne fera qu'ajouter des propriétés):
new Ext.FormPanel({
items: [
Ext.applyIf({id:'foo'}, cfg),
Ext.applyIf({id:'bar'}, cfg)
]
});
Une chose que je voudrais ajouter à @ réponse de Mchl est que si vous allez faire la effort de créer votre propre classe, assurez-vous de lui donner un xtype personnalisé. De cette façon, vous pouvez toujours tirer parti des capacités d'instanciation paresseuses d'Ext, même avec vos propres composants personnalisés, au lieu de devoir créer des instances de tout au moment de l'initialisation.
L'exemple est correct, mais initComponent n'est pas réellement requis. Ce qui est requis, c'est que si vous * remplace * initComponent, vous * devez * appeler la version de la superclasse (bien que cela s'applique à toute méthode héritée dans le cycle de vie du composant que vous remplacez). Dans cet exemple, il peut être omis - il sera déjà appelé pour vous. –
Merci d'avoir précisé cela! – Mchl