1

我正在做一个 GWT 应用程序,速度跟踪器说绘画过程需要很长时间,所以阅读 pdf 的:Google 2010 - IO session ("Architecting for performance with GWT"),出现这句话:

我什么时候应该使用小部件?
当组件必须接收事件并且
无法在父小部件中捕获事件时

我同意第一个条件(我想使用小部件,因为我的组件,例如 textBox 或图像必须接收事件,例如 MouseOver、MouseClick ...),但我的问题涉及第二个条件。事实上,我不明白在这种情况下应该没有办法在父小部件中捕获事件,因为它(“总是”)可以访问任何使用 Javascript 操作 DOM 的元素/组件。在这里,我假设使用 Javascript 我可以访问小部件(使用 ui:field 例如在 ui:binder 中标识)元素和 DOM 元素(使用 id="" 标识)。

那么你能告诉我为什么我错了,或者在“无法在父小部件中捕获事件”时给我一个例子吗?

谢谢,

4

1 回答 1

1

它更多地是关于“没有简单的方法来放置可以在父小部件中捕获事件的代码”。这都是关于组件化的:您不希望将事件处理代码放在组件之外,也不希望将事件处理代码附加到组件外部的元素上。所以组件仍然是小部件,但在它们内部尝试尽可能多地使用 HTML 和事件冒泡。

在实践中,这意味着在复合材料中使用HTMLPanel(或者RenderablePanel为了更好的性能,如果你使用 2.5.0 RC1 并且你有点冒险),否则使用CellWidgetUiRenderer为了便于处理从特定子元素冒泡的事件)

于 2012-06-29T22:47:39.350 回答