GWT Bootstrap прослушиватель событий typeahead? - PullRequest
0 голосов
/ 03 декабря 2018

Я использую виджет 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 
    }
});

Спасибо

1 Ответ

0 голосов
/ 07 декабря 2018

Я могу подумать о двух вариантах:

Вы можете зарегистрировать обработчик событий в конструкторе productSelect или в коде, где вы вызываете конструктор.Не при загрузке компонента.

Вы можете проверить API HandlerRegistration, он дает подсказку о том, как обработчик может отменить регистрацию:

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

    public void onMyThing(MyEvent event) {
        /* do your thing * /
        reg.removeHandler();
    }
};
...