Я нашел какое-то решение, но ни одно из них не является законным для моего кода.
Итак, в основном я пытаюсь открыть модал, чтобы подтвердить, что пользователь действительно хочет отменить и выйти из процесса. Второй модал откроется, но первый закроется.
Поток такой. Если пользователь отменит, откроется другое всплывающее окно и спросит пользователя, хочет ли он выйти. Если пользователь нажмет Да, процесс завершится, и все будет работать корректно.
Но если пользователь нажмет Нет, я хочу, чтобы первый модал снова показывался.
Может быть, код поможет вам.
HTML
<md-dialog flex="40" aria-label="Edit Light">
<md-toolbar>
<div class="md-toolbar-tools">
<h2>Manual select bridge</h2>
</div>
</md-toolbar>
<md-dialog-content>
<div class="md-dialog-content">
<div class="container-fluid">
<form class="form-horizontal" role="form" id="editBridge" name="editBridge">
<!--Bridge-->
<!--Bridge-->
<div class="form-group has-feedback">
<label for="light-bridge-select" class="col-sm-2 control-label">Bridge</label>
<div class="col-sm-10 pr30">
<select id="light-bridge-select" class="form-control" ng-model="light.bridgeMac" data-required-cond="{{ light.commissioned }}"
ng-options="item.mac as item.name for item in bridgesList">
<option value="" disabled >Select Bridge</option>
</select>
<span class="glyphicon form-control-feedback" aria-hidden="true"></span>
<div style="height:15px" class="help-block with-errors"></div>
</div>
</div>
<!--ID-->
<div class="form-group has-feedback">
<label class="col-sm-2 control-label">Light ID</label>
<div class="col-sm-10">
<div flex>
<input name="light-id" data-light-id class="form-control" ng-model="light.newidentifier" type="number">
<info-tooltip key="light.form.light_id"></info-tooltip>
<span class="glyphicon form-control-feedback" aria-hidden="true"></span>
</div>
<div style="height:15px" class="help-block with-errors"></div>
</div>
<div ng-show="showError" style="height:15px" class="help-block with-errors">
<p class="text-danger"> All fields are required.</p>
</div>
<md-dialog-actions layout="row">
<span flex></span>
<md-button ng-click="save()">Save</md-button>
<md-button ng-click="cancel()">Cancel</md-button>
</md-dialog-actions>
</form>
</div>
</div>
</md-dialog-content>
.js file
this.manualMapping= function (bridges,light) {
return $mdDialog.show({
templateUrl: "views/common/modals/manual-mapping-light.html",
resolve: {
bridges: function () {
return bridges
},
light: function () {
return light
}
},
clickOutsideToClose: false,
skipHide:true,
controller: [
'$rootScope',
'$scope',
'defaults.services',
'modal.services',
'profile.services',
'$timeout',
function (
$rootScope,
$scope,
$defaultServices,
$modalServices,
$profileServices,
$timeout
) {
$timeout(function () {
var addLightForm = $('#addLight');
addLightForm.validator({
disable: false,
focus: true,
excluded: [':disabled'],
feedback: {
success: 'glyphicon-ok',
error: 'glyphicon-remove'
},
custom: {
'light-id': function () {
return $profileServices.checkLightDuplicateId(
$scope.light.customLightId,
$scope.light.identifier
) ? 'Duplicate Light Id' : undefined
},
}
});
});
$scope.bridgesList = bridges
$scope.save = function(){
$profileServices.manualUpdateBridgeOrDelete(light.identifier, $scope.light.bridgeMac, $scope.light.newidentifier, light.room,true).
then(function (response) {
if(response){
$modalServices.modalAlert('The light you added was commissioned','Light succesfully added!').then(function(){
$rootScope.$broadcast('refreshProfile');
})
}
else{
$modalServices.modalAlert("The light you added wasn't commissioned",'Error','red').then(function(){
$rootScope.$broadcast('refreshProfile');
})
}
})
}
$scope.cancel = function() {
var confirm = $mdDialog.confirm()
.title('Are you sure you want to cancel?')
.textContent('If you cancel the commissioning process of the light you added, it will remove the light! Are you sure you want to cancel?')
.ok('Yes')
.cancel('No');
$mdDialog.show(confirm).then(function() {
$modalServices.modalAlert("The light was added, but not commissioned!",'Succes','red').then(function(){
$rootScope.$broadcast('refreshProfile');
},
function(){
});
});
}
}]
});
}
Заранее спасибо.