2010-10-19 17 views
0

Son,Une approche plus efficace pour fixer les composants au panneau et les rendre à l'écran

J'utilise UiBinder chaque fois que possible d'améliorer les performances des applications lorsque cela est possible. Cependant, autant que je comprends, UiBinder est à son meilleur lorsque le modèle correspondant contient des pertes d'informations statiques.

Dans mon cas, l'application mobile, la plupart des zones de l'écran contiennent des informations dynamiques. Par exemple, il y a un panneau avec des boutons, mais vous ne savez pas à l'avance combien de boutons sont affichés en même temps. C'est pourquoi j'utilise les méthodes HTMLPanel.add (Widget wgt, String id) ou FlowPanel.add() dans la classe UiBinder propriétaire. Est-ce que cela diminue l'utilisation de UiBinder et l'aptitude à appeler setInnerHTML() au lieu de créer des éléments à travers les opérations DOM parce que ces méthodes add() n'acceptent que les widgets et non les éléments?

Peut-être y a-t-il une astuce qui permettrait d'ajouter l'objet Element à la place des objets Widget aux panneaux et ils utiliseraient ensuite setInnerHTML au maximum?

Merci

+0

La première question à laquelle vous devez répondre est "Votre code/application actuel est-il réellement lent (ish)?" :) Le compilateur GWT fait beaucoup d'optimisations, donc à moins que vous ayez des houndreds de ces Widgets, ça devrait aller. –

+0

Il est assez lent, mais seulement dans le navigateur mobile, pour lequel il est conçu;). Exécuter du code avec 10 fois plus de widgets sur le navigateur de bureau est beaucoup plus rapide. C'est pourquoi je cherche des moyens de réduire encore le nombre de widgets. – d56

Répondre

1

Dans certains cas (ce qui exclut malheureusement les boutons, à cause de IE), vous pouvez simplement ajouter des éléments DOM et/ou utiliser innerHTML (sur des éléments DOM, ne pas utiliser des widgets du panneau dans ce cas) et écouter à des événements à un niveau supérieur (généralement votre widget propriétaire UiBinder), en profitant des bulles d'événements. En d'autres termes: utilisez ce que l'on appelle généralement la "délégation d'événements".