1

我正在使用 GWTBootstrap3 Typeahead 小部件。主要问题是事件没有被取消注册,并且事件捆绑了我加载组件的次数。默认情况下缓存组件。第一次组件加载触发事件 1 次,第二次组件加载触发 2 次,依此类推。它造成了很多问题。我试过 HandlerRegistration 和 removeHandler() 它不起作用。如果任何机构找到解决方案,请告诉我。

这是注册事件的代码位:

HandlerRegistration typeAheadListener = 
    productSelect.addTypeaheadSelectedHandler(new TypeaheadSelectedHandler<Part>() {
    @Override public void onSelected(TypeaheadSelectedEvent<Part> event) { 
        selectedPart = event.getSuggestion().getData(); // Handling the event 
    }
});

谢谢

4

1 回答 1

0

我可以在那里想到两个选择:

您可以在 productSelect 的构造函数中或在调用构造函数的代码中注册事件处理程序。不是在加载组件时。

您可以检查 HandlerRegistration API,它提供了有关处理程序如何注销自身的提示:

new MyHandler() {
    HandlerRegistration reg = MyEvent.register(eventBus, this);

    public void onMyThing(MyEvent event) {
        /* do your thing * /
        reg.removeHandler();
    }
};
于 2018-12-06T23:05:23.580 回答