Предупредить пользователя о том, что он собирается потерять свои изменения в представлении "Правка" при выходе из режима просмотра другого в GWT.
Я хочу предупредить пользователя, что он потеряет свои изменения в EditView при смене представления на другое.
Я использую MVP4G в своем проекте, и проект разделен на структуру mvp (один пакет для шаблона, другой для представлений...). Есть ли какое-либо решение для обнаружения EditView в eventBus. или определить текущий вид, отображаемый для пользователя
заранее спасибо
2 ответа
Благодаря функции Navigation Event в mvp4g, докладчик получит контроль до изменения вида. На этом этапе докладчик может решить, будет ли выполнена навигация или нет. Это правильное место в приложении mvp4g для сохранения ваших данных.
Сначала нужно отметить все события в шине событий, которые изменят ваш взгляд:
@Event(..., navigationEvent = true)
void goToPage1();
Затем ваши докладчики должны реализовать интерфейс NavigationConfirmationInterface и требуемый метод подтверждения:
public class Presenter extends ... implements NavigationConfirmationInterface {
public void confirm(NavigationEventCommand event) {
//pseudo method to verify if the view has changed
if (isViewModified(){
//Window shouldn't be used inside a presenter
//this is just to give a simple example
if (Window.confirm("Are you sure you want to leave?")){
event.fireEvent();
}
} else {
event.fireEvent();
}
}
}
И последнее, что нужно сделать, - это установить предъявителя текущего представления для предъявителя подтверждения путем вызова:
event.fireEvent(false);
Обычно это делается, когда докладчик получает контроль.
Вы найдете документацию здесь:
https://github.com/FrankHossfeld/mvp4g/wiki/03.-Defining-EventBus
Благодаря команде MVP4G, включая Эль Хосса, который дает мне подсказку проверить блог MVP4G. Я решил свою проблему, следуя этому примеру http://mvp4g.blogspot.com/2011/06/navigation-control.html