Я создаю почтовый ящик в angular. И мне нужно было бы сохранить черновик сообщения, когда всплывающее окно для отправки сообщения закрывается.
Я знаю, что есть несколько альтернатив:
scope.$on("$destroy", function () { saveMessage() });
и:
$mdDialog.show(...).finaly(function(){ saveMessage() });
Но обоих недостаточно:
- Первый вызывается, когда диалог уже закрыт. Это связано с неприемлемыми требованиями (есть iFrame, который нужно открыть)
- Второй находится вне области действия контроллера mdDialog и возлагает ответственность на вызывающего всплывающее окно, в то время как оно должно быть в самом всплывающем окне.
Поэтому я ищу способ вызвать функцию ДО того, как всплывающее окно действительно закроется. Что-то вроде scope.$on("$mdDialogBeforeClose", function () { saveMessage() });
Другим вариантом было бы перехватывать каждое событие закрытия. Выглядит некрасиво, но может быть решением. В этом случае мне нужно будет слушать кнопку выхода и щелкать за пределами всплывающего окна (хотя я мог бы отключить эту функцию)...
Есть идеи получше?
Спасибо!
ИЗМЕНИТЬ:
Дополнительный вопрос: как поймать событие escape-keypress? Я пробовал <md-dialog aria-label="List dialog" ng-keypress="keyPress($event)">
, но он даже не запускается...