我们正在使用mdDalog服务弹出一个模态表单,允许用户查看和编辑数据。我们有一个关闭按钮,用于验证数据是否已保存;如果没有,则为用户提供放弃更改或返回编辑的选项。如果他们放弃更改,我们只需在$ mdDialog上调用close()即可。现在,我们要允许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!