Quelle est la différence entre applyTo
et contentEl
dans extJS? Ce sont deux propriétés de configuration du panneau.
Réponses
Trop de publicités?applyTo
rend le panneau dans un élément cible (le corps du panneau pourrait toujours contenir n'importe quel contenu), contentEl
utilise l'élément cible comme contenu de son corps (le panneau pourrait encore être rendu dans n'importe quel autre élément). Les deux méthodes sont sans rapport.
Éditer : Juste une note qu'à partir d'Ext 4.0+, la configuration applyTo
n'existe plus. Au fil du temps, la stratégie d'amélioration déclarative / progressive est devenue moins viable pour Ext (elle n'a jamais été pleinement prise en charge dans tous les composants de toute façon), et ils ont finalement arrêté de la soutenir. Vous utiliseriez toujours renderTo
maintenant (pour rendre programmationnellement vers un élément cible), tandis que contentEl
est toujours valide et indique toujours l'élément à partir duquel prendre du contenu et l'ajouter dans le corps du panneau. contentEl
est le plus utile lorsque vous avez un HTML existant sur la page que vous voulez afficher à l'intérieur d'un composant Panel sans avoir à reproduire le balisage du contenu dans le code JS.
En passant, je vais clarifier quelque chose d'autre... Il est important de comprendre que renderTo
est généralement utilisé uniquement par le conteneur supérieur dans la disposition d'une application. Tous les composants enfants devraient toujours être ajoutés en tant que items
à un conteneur -- rendre directement les composants enfants à un élément cible via renderTo
signifie que ces composants ne participeront pas au système de disposition géré par Ext, ce que vous ne voulez généralement PAS dans une application.
Une autre différence est que chaque composant dans Ext supporte renderTo
, mais seuls certains composants (le plus utile étant Panel) honoreront contentEl
de manière significative. Même si contentEl
est défini sur AbstractComponent
, la plupart des composants ne sont pas conçus pour manipuler un contenu HTML arbitraire.