Я хотел бы закрыть модальный режим после нажатия кнопки «Сохранить», но только тогда, когда функция, которая также вызывается этой кнопкой, успешно разрешена.
parent.controller.js
.module('app.test')
.controller('TestController', function ($uibModal) {
let vm = this
vm.addTest = addTest
vm.openAddTestModal = openAddTestModal
function openAddTestModal() {
var modalInstance = $uibModal.open({
component: 'AddTestModalComponent',
windowClass: 'test-modal',
})
modalInstance.result.then(function (result) {
vm.addTest(result);
});
}
function addTest(test) {
//do something
if (testCondition) {
// do something
// success - close modal
} else {
// error - don't close modal
}
}
})
модальный.component.js
.component('AddTestModalComponent', {
templateUrl: 'app/modals/add-test-modal.html',
controllerAs: 'vm',
controller: function ($modalInstance) {
this.testToSave = [''];
this.save = function (result) {
$modalInstance.close(result);
//close only function called in parent resolve success
};
}
})
add-test-modal.html
<button class="btn btn-primary btn-blue" type="submit"
ng-click="vm.save(vm.test)">
Save
</button>
Возможно ли это так, или, может быть, я должен поделиться сферой и просто вызвать эту функцию из родителя области, а затемзакрыть при условии?