1

我正在使用 gwt 开发一个 UI,并且要求在子小部件上执行某些操作的情况下,父小部件需要采取一些与此相对应的操作。

例如,我有一个主面板(父面板),其中有一个子小部件列表。根据对任何子小部件的更改,需要更新其他小部件内容。

在这种情况下要遵循的正确设计是什么,即 1 选项是: - 孩子捕获更改事件并更新自己。向父小部件引发事件,然后更新子小部件。- 其他替代方法是在父组件本身中拥有子组件的更改处理程序,然后父组件可以将更改传播到其他组件。

4

3 回答 3

1

您只需要一个事件处理程序。例如:

ClickHandler h = new ClickHandler() {
    public void onClick(ClickEvent event) {
        Widget sender = (Widget) event.getSource();

             if (sender == child1) {
                // update child1
                // update child 2
             } else if (sender == child2) {
                // update child2
                // update child1
             }
        }
    }
}
parent.addDomHandler(h, ClickEvent.getType());
于 2012-10-14T16:00:43.063 回答
0

我认为最好的选择是使用 EventBus。简单解释如何使用它:http ://tv.jetbrains.net/videocontent/gwt-event-bus-basics 。首先 - 定义子小部件的事件。并通过 EventBus 使用它们。看看这个答案:https ://stackoverflow.com/a/6030379/904820

于 2012-10-14T15:05:47.600 回答
0

您可以使用 Child 的 UiHandlers 以及 Parent Widgets。请通过链接。 https://developers.google.com/web-toolkit/doc/latest/DevGuideUiHandlers

于 2012-10-15T06:31:34.087 回答