Angular UI Bootstrap Modal Dialog Close Event Angular UI Bootstrap Modal Dialog Close Event angularjs angularjs

Angular UI Bootstrap Modal Dialog Close Event


This works for clicking on the backdrop and pressing the esc key if you are opting in on that.

var modalInstance = $modal.open({    templateUrl: '/app/yourtemplate.html',    controller: ModalInstanceCtrl,    windowClass: 'modal',    keyboard: true,    resolve: {        yourResulst: function () {            return 'foo';        }    }});var ModalInstanceCtrl = function ($scope, $modalInstance, yourResulst) {    var constructor = function () {       // init stuff    }    constructor();    $modalInstance.result.then(function () {        // not called... at least for me    }, function () {        // hit's here... clean up or do whatever    });    // VVVV other $scope functions and so on...};

UPDATE: alternative approach

I have no idea why this way is not documented at http://angular-ui.github.io/bootstrap/ ... but I find it much better. You can now use that page's controller or use a specific controller with the controller as syntax. You could even utilize ng-include for the content of the modal, if you want separation on html. The following works with no JS needed in the controller to setup/configure the modal, as long as you have bootstrap/bootstrapUI included in your project/site

<div class="row">    <button class="btn btn-default" data-toggle="modal" data-target="#exampleModal">Open Example Modal</button></div><div class="modal fade" id="exampleModal" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">    <div class="modal-dialog modal-lg">        <div class="modal-content">            <div class="modal-header">                <button type="button" class="close" data-dismiss="modal">Close</button>                <h2 class="modal-title" id="exampleModalLabel">Modal Example</h2>            </div>            <div class="modal-body" style="padding-bottom:0px;">                <h3>model markup goes here</h3>            </div>        </div>    </div></div>


I finished with the following code:

$modal.open(modalOptions).result.finally(function(){  console.log('modal has closed');});

This way you can avoid the method then()


This worked for me:

var modalInstance = $modal.open({...});        modalInstance.result.then(function () {            //something to do on close        });