J'ai donc besoin de créer un composant ExtJS (version 2.3.0). Le composant est simplement HTML (style) - c'est un en-tête.Meilleure approche pour créer un ExtJS personnalisé en HTML pur
Mon approche actuelle est de créer un composant personnalisé comme suit:
/**
* A ExtJS component for a header for the application
*/
Ext.ux.AppHeader = Ext.extend(Ext.Component, {
height: 32,
tpl: new Ext.Template ('<div class="title-bar"><h1>My App</h1></div>'),
onRender: function(ct) {
this.el = this.tpl.append (ct);
Ext.ux.AppHeader.superclass.onRender.apply(this, arguments);
}
});
Ext.reg('AppHeader', Ext.ux.AppHeader);
Cela fonctionne très bien, mais je ne suis pas convaincu qu'il est la « bonne » pour aller à ce sujet. Si quelqu'un peut partager une façon plus idiomatique de le faire, ou un moyen qui utilise mieux la magie intérieure dans ExtJS, ce serait génial.
Si d'un autre côté, c'est la "bonne" façon de le faire - que ce soit un exemple de comment on peut.
Modifier
je vraiment essayé de dur avec celui-ci. L'approche que je prends maintenant est:
{
html: '<div class="title-bar"><h1>My App</h1></div>'
}
et définir le CSS « barre de titre » d'avoir le texte du bon style/taille, et ExtJS fait la bonne chose.
D'accord. Surtout que ce n'est pas personnalisé ou réutilisé; Il suffit de le coder comme div dans le balisage, puis de le placer dans un Ext.Panel en utilisant contentEl. –
D'accord. BTW: on peut monter plus haut dans la hiérarchie de classe pour obtenir les avantages que vous décrivez; Le conteneur est la classe la plus légère qui implémente des dispositions. – Upperstage
Le conteneur contient spécifiquement * d'autres composants et peut ainsi gérer la disposition de ses composants enfants. Un BoxComponent est la classe la plus légère qui peut être * gérée * par un Conteneur et peut participer à la mise en page (avoir sa taille et sa position gérée) facilement. Tout dépend de la nature du composant que vous créez. –