Мы используем сервис mdDalog для вызова модальной формы, позволяющей пользователю просматривать и редактировать данные. У нас есть кнопка закрытия, где мы проверяем данные, которые были сохранены, и, если нет, даем пользователю возможность отменить изменения или вернуться к редактированию. Если они отменяют изменения, мы просто вызываем close () для $ mdDialog. Теперь мы хотим, чтобы клавиша ESC и / или щелчок за пределами модального окна закрывали модальное окно. Мы можем вызвать код проверки, но, похоже, в onRemoving нет способа отменить действие. Код выглядит следующим образом
$mdDialog.show({
template: activityTemplate,
escapeToClose: true,
clickOutsideToClose: true,
fullscreen: false,
controller: 'activityController',
controllerAs: '$ctrl',
onRemoving: function(element, removePromise) {
// call validation function on parent controller
// cancel close if data is not valid
console.log(element);
console.log(removePromise);
$mdDialog.cancel();
},
locals: {
activity: activity.data,
comments: comments.data
}
}).then((goTo) => {
if (goTo) {
$state.go(goTo.route, goTo.params);
} else {
$state.go('^');
}
return goTo;
}, () => {}).finally(() => {});
Существуют ли другие события, которые мы могли бы подключить, или другой недокументированный способ условно отменить событие закрытия? Я всегда мог установить escapeToClose и clickOutsideToClose обратно в false и прослушивать события нажатия и нажатия клавиш при отображении диалогового окна, но я ожидаю, что будет лучший способ.
Заранее спасибо.
С нетерпением ждем перехода на новый Angular!