GWT/MVP:detectando eventos de mudança em uma tabela com padrão MVP adequado

StackOverflow https://stackoverflow.com/questions/3215816

  •  13-09-2020
  •  | 
  •  

Pergunta

Estamos usando o gwt-presenter, mas não é realmente uma pergunta específica para isso...

Eu tenho uma tabela com usuários nela.À medida que construo a tabela na visualização (a partir dos dados fornecidos pelo apresentador), preciso adicionar dois botões de ação ("Editar" e "Excluir") no final da linha.

Qual é a melhor maneira de atribuir manipuladores de cliques a esses botões para que o apresentador saiba qual foi clicado?Antes disso, poderíamos passar um campo privado da visualização para o apresentador e anexar um manipulador de cliques discreto a esse botão.No entanto, este método é bastante rígido e não funciona muito bem neste cenário.

Desde já, obrigado.

Foi útil?

Solução

Que tal fazer com que a view permita a assinatura de eventos de clique de edição/exclusão, registrando internamente os eventos de clique de linha individuais e depois delegando o tratamento dos eventos aos registrados pela view?

Quero dizer algo como o seguinte código pesudo:

Visualizar:

addRowEditClickHandler(ClickHandler handler) {
    this.rowEditClickHandler = handler; 
}
addRowDeleteClickHandler(ClickHandler handler) {
    this.rowDeleteClickHandler = handler; 
}

//... somewhere when setting up of the grid...

rowEditButton.addClickHandler = new ClickHandler() {
    onClick(args) {
        this.rowEditClickHandler.onClick(args)

}

rowDeleteButton.addClickHandler = new ClickHandler() {
    onClick(args) {
        this.rowDeleteClickHandler.onClick(args)

}

Apresentador:

View view = new View();
view.addRowEditClickHandler( new ClickHandler() {
    onClick(args) {
        doSomething();
    }
});
view.addRowDeleteClickHandler( new ClickHandler() {
    onClick(args) {
        doSomething();
    }
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top