I'm creating a mailbox in angular. And I would need to save the draft message when the popup to send a message closes.
I know there are some alternatives:
scope.$on("$destroy", function () { saveMessage() });
and:
$mdDialog.show(...).finaly(function(){ saveMessage() });
But both are insufficient:
So I'm looking for way to call a function BEFORE the pop-up actually closes.
Something like scope.$on("$mdDialogBeforeClose", function () { saveMessage() });
Another option would be to hook every close event. Seems ugly, but might be the solution. In that case I would need to listen to the escape-button and clicking outside the pop-up (Altough I might disable that function)...
Any better ideas?
Thx!
EDIT:
An addition question: How to catch the escape-keypress event? I tried <md-dialog aria-label="List dialog" ng-keypress="keyPress($event)">
but it's not even triggered...
$new(), { close: function() {$mdDialog. cancel();} }) }); Then in your dialog's HTML, just use ng-click="close()" . Alternatively, you can pass the $mdDialog object as a property of your scope.
$mdDialog opens a dialog over the app to inform users about critical information or require them to make decisions. There are two approaches for setup: a simple promise API and regular object syntax.
Maybe use the onRemoving
callback - CodePen
From the docs:
Markup
<div ng-controller="MyController as vm" id="popupContainer" ng-cloak="" ng-app="app">
<md-button class="md-primary md-raised" ng-click="vm.open($event)">
Custom Dialog
</md-button>
<script type="text/ng-template" id="test.html">
<md-dialog aria-label="Test">
Hello!
</md-dialog>
</script>
</div>
JS
angular.module('app',['ngMaterial', 'ngMessages', 'material.svgAssetsCache'])
.controller('MyController', function($scope, $mdDialog) {
this.open = function(ev) {
$mdDialog.show(
{
templateUrl: "test.html",
clickOutsideToClose: true,
onRemoving: function (event, removePromise) {
console.log(123);
}
});
};
})
Dialog return a promise using that you can handle dialog close event
var dialogPromise = $mdDialog.show(
{
templateUrl: "test.html",
clickOutsideToClose: true,
onRemoving: function (event, removePromise) {
console.log(123);
}
});
dialogPromise.then(function(){
// hide method handler
// You can write your code here that execute after dialog close
}, function(){
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With