Я открываю $ mdDialog
$scope.openDialog = function(){
$mdDialog
.show({
// ...
clickOutsideToClose: true,
controller: MyDialogController
})
.then(function(successData) {
console.log("Closed as success: " + successData);
// Closed as success: hidden_from_button
})
.catch(function(errorData) {
console.log("Closed as error: " + errorData);
})
.finally(function(closeData) {
console.log("On every close data: " + closeData);
});
};
function MyDialogController($scope, $mdDialog) {
$scope.hide = function(){
console.log("Close 1");
$mdDialog.hide('hidden_from_button');
}
}
Я хочу узнать, как отправлять параметры в функции .finally
и .catch
$mdDialog
. В частности, когда диалог закрыт с параметром clickOutsideToClose: true
. Я не могу найти способ сделать это.
Это соответствующий код моего диалога:
<md-dialog>
<md-toolbar>
<md-button ng-click="hide()">
</md-button>
</md-toolbar>
<md-dialog-content>
<!-- Some more code -->
</md-dialog-content>
</md-dialog>
Я хотел бы иметь возможность печатать сообщения:
Closed as success: hidden_from_button
(что я уже сделал)
Closed as error: data_passed_as_error
On every close data: data_passed_every_time
Я пытался добавить к MyDialogController
функцию:
$scope.on("$destroy", function(ev) {
console.log("Close 2");
ev.preventDefault();
$mdDialog.cancel('data_passed_as_error');
}
Но печатный вывод всех связанных console.log
этого действия:
Close 2
Closed as error: undefined
On every close data: undefined
Что говорит мне, что параметр не принимается. Кроме того, если я использую эту функцию, после закрытия диалога с ng-click="hide()"
, последняя функция вызывается также. Это результат всех связанных console.log
нажатий на кнопку закрытия:
Close 1
Close 2
Closed as success: hidden_from_button
On every close data: undefined
Я хочу правильно обрабатывать $mdDialog
и иметь возможность отправлять данные в различные функции .finally
, .then
и .catch
обещания, которые оно создает, без коллизий друг с другом.
Мне нужно отправить специальный параметр, когда пользователь нажимает за пределами диалогового окна на родительский контроллер. Как мне это сделать?