我正在使用Angular创建一个邮箱。当弹出窗口关闭时,我需要保存草稿消息。
我知道有一些替代方案:
scope.$on("$destroy", function () { saveMessage() });
并且:
$mdDialog.show(...).finaly(function(){ saveMessage() });
但是两种方法都不够好:
- 第一种情况是在对话框已经关闭时调用的。这是因为要求不可接受(需要打开一个 iFrame)。
- 第二种情况超出了 mdDialog 控制器的范围,并将责任交给了弹出窗口的调用者,而应该在弹出窗口本身中处理。
scope.$on("$mdDialogBeforeClose", function () { saveMessage() });
。另一个选择是挂钩每个关闭事件。看起来很丑,但可能是解决方案。在这种情况下,我需要监听 escape 按钮和点击弹出窗口外部(虽然我可能会禁用该功能)...
有更好的想法吗?
谢谢!
编辑:
另一个问题:如何捕获 escape 键按下事件?我尝试过
<md-dialog aria-label="List dialog" ng-keypress="keyPress($event)">
但它甚至没有触发...
finally
),要么是在HTML已经被销毁后执行的(scope.$on('$destroy')
)。 - Thomas Stubbeshow()
,所以我不能只是将作用域传递给DialogController,这会带来很多问题。您知道一种方法可以做到这一点,但是为DialogController提供新范围,而不是传递它吗? - Thomas StubbepreserveScope: true
,我期望函数在关闭后仍然能够工作。或者你想在某些情况下防止关闭吗?如果是这样,重新打开模态框可能是一个好主意。 - fishbone