Невозможно получить представление в диалоговом окне, которое вы описали, используя $mdDialog.confirm()
.
Этот метод предоставляет предварительно настроенное диалоговое окно, в котором могут быть только две функциональные кнопки.Вы можете создать нужный диалог, предоставив дополнительные параметры конфигурации для $mdDialog.show()
.
Вот пример.
Вам нужно будет предоставить HTML для своего пользовательскогодиалог:
<script type="text/ng-template" id="custom-confirm.html">
<md-dialog>
<md-dialog-content>
<md-content layout-padding>
<div>...</div>
</md-content>
</md-dialog-content>
<md-dialog-actions>
<md-button ng-click="cancel()">Cancel</md-button>
<md-button ng-click="save()">Save</md-button>
<md-button ng-click="saveAndClose()">Save and Close</md-button>
</md-dialog-actions>
</md-dialog>
</script>
Затем предоставьте пользовательскую конфигурацию диалога для $mdDialog.show()
:
$scope.showCustomConfirm = function () {
$mdDialog.show({
controller: function ($scope, $mdDialog) {
$scope.cancel = function () {
$mdDialog.cancel();
};
$scope.save = function () {
/* ... */
};
$scope.saveAndClose = function () {
/* ... */
};
},
templateUrl: 'custom-confirm.html',
});
};
Я разбудил ваш CodePen, чтобы включить пример, описанный выше.
Редактировать
Чтобы кнопка сохранения снова открыла то же самое диалоговое окно, просто соедините вызов, чтобы открыть диалоговое окно для вызова, чтобы сначала скрыть его.Вы можете сделать это, потому что возвращаемое значение $mdDialog.hide()
- это обещание, которое разрешается после того, как диалоговое окно спряталось.
Чтобы следовать приведенному выше примеру, вам потребуется выполнить небольшой рефакторинг, чтобы сделатьуверен, что вы не в тени $scope
:
$scope.showCustomConfirm = showCustomConfirm;
function showCustomConfirm() {
$mdDialog.show({
controller: function ($scope, $mdDialog) {
$scope.save = function () {
// Save data...
$mdDialog.hide().then(showCustomConfirm);
};
// Everything else as before...
},
});
}
А вот обновленный ответный код CodePen.