Ответ на первый вопрос: ДА.
Вам необходимо просмотреть все возможные события выхода, которые могут повредить редактируемые в данный момент данные.
Что ж, теперь проблема в том, как управлятьэто правильно.Используя инфраструктуру MVC, вы запускаете соответствующие команды из ваших компонентов:
- CHANGE_LIST_ITEM (новый элемент)
- CHANGE_TAB (новая вкладка)
- CHANGE_SCREEN (новый экран)
Затем каждая команда проверяет, сохранена ли текущая отредактированная вкладка или нет.Если нет, то отображается предупреждение.Иначе, если нет никаких изменений, это позволяет списку, средству выбора экрана и панели вкладок продолжить.
Таким образом, ваши компоненты (список, экраны, вкладки) должны реализовать некоторый механизм отката или предотвращать дефолт.Как правило, изменение их состояния должно быть разрешено центральным валидатором (в команде MVC).
В случае списка: я бы предположил, что список можно выбрать не щелчком мыши, а только программно.Вы устанавливаете слушателя на событие щелчка элемента списка.Если команда позволяет установить новый элемент, она уведомит список.В MVC обычно отправляют асинхронное сообщение, которое получает посредник списка.[[И даже более правильно: команда установит некоторые свойства модели (например, currentListItem) и модель, которая отправляет асинхронное сообщение.]]
Редактировать: Для события закрытия браузера вам нужно вызвать эксперта JavaScript.