Как (несколько =true) презентатор и представление могут быть инициализированы с параметрами, используя eventBus.addHandler?
С архитектурой Mvp4g (только) один экземпляр представления (внедренный с помощью аннотации @Presenter) связан с его презентатором. В моем случае у меня есть EntityView с его Presenter EntityPresenter. всякий раз, когда пользователь щелкает по узлу Leaf дерева Navigator, я добавляю новую вкладку в TabSet. И эта новая вкладка будет содержать EntityView. Итак, у меня будет столько же EntityView, сколько вкладок в TabSeT.
Я поставил multiple=true
для EntityPresenter. Конструктор EntityView принимает один аргумент.
@Inject
public EntityView(final Record view) {
//some initialization
}
Вопрос, где я делаю (от другого докладчика):
EntityPresenter presenter = eventBus.addHandler(EntityPresenter.class);
У меня есть один аргумент Record params
который я хочу передать конструктору EntityView, как это сделать? и аннотирующий конструктор (принимающий аргумент) с @Inject будет внедрять EntityView в EntityPresenter?
1 ответ
Я предлагаю использовать EventHandler
- это ведущий без представления в mvp4g - который получает событие showEntity(длинный ключ). В методе onShowEntity(...) вы можете создать докладчика с помощью оператора:
EntityPresenter presenter = eventBus.addHandler(EntityPresenter.class);
С этой ссылкой на экземпляр вы можете установить ключ в презентере. Но имейте в виду, вы должны управлять своими экземплярами презентатора самостоятельно, когда используете multiple=true.