2010-10-19 2 views
0

Его,Более эффективный подход для крепления компонентов к панели и вынести их на экране

Я использую UiBinder всякий раз, когда это возможно, чтобы улучшить производительность приложений, когда это возможно. Однако, насколько я понимаю, UiBinder в лучшем случае, когда соответствующий шаблон содержит потери статической информации.

В моем случае мобильное приложение, большинство областей экрана содержит динамическую информацию. Например, есть панель с кнопками, но вы не знаете заранее, сколько кнопок отображается за один раз. Вот почему я использую методы HTMLPanel.add (Widget wgt, String id) или FlowPanel.add() в собственном классе UiBinder. Разве это не уменьшает использование UiBinder и не позволяет вызвать setInnerHTML() вместо создания элементов через операции DOM, потому что эти методы add() принимают только виджеты, а не элементы?

Возможно, есть трюк, который позволит добавить объект Element вместо объектов Widget к панелям, и тогда они будут использовать setInnerHTML в полной мере?

Благодаря

+0

Первый вопрос, на который вы должны ответить: «Является ли ваш текущий код/​​приложение на самом деле медленным (ish)?» :) Компилятор GWT делает много оптимизаций, поэтому, если вы не овладели этими виджетами, вы должны быть в порядке. –

+0

Это довольно вяло, но только в мобильном браузере, для которого он предназначен;). Запуск кода с 10-кратным количеством виджетов на настольном браузере намного быстрее. Вот почему я ищу способы дальнейшего сокращения количества виджетов. – d56

ответ

1

В некоторых случаях (которые, к сожалению, исключить кнопки, из-за IE), вы можете просто добавить DOM элементы и/или использовать innerHTML (по элементам DOM, не используйте панель виджетов в данном случае) и слушать к событиям на более высоком уровне (обычно ваш виджет владельца UiBinder), используя преимущества пузыря событий. Другими словами: используйте то, что обычно называется «делегирование событий».