I created this plnkr when answering this AngularJS question - open the controller in a dialog box (the template is loaded dynamically) .
The entire application example is launching a dialog box based on a template with its own controller. At the first start of the dialog, everything works as expected. However, if I try and restart the dialogue, a modal background will appear after it is dismissed, but there is no dialogue. In the javascript console, you can see that the then method in the promise returned by $dialog.open() is called immediately, but the background is not removed and no error messages are reported. I am completely puzzled.
The dialog can be opened and closed again on the angular -ui bootstrap page.
Where am I wrong?
HTML:
<!DOCTYPE html> <html ng-app="plnkr"> <head> <link data-require=" bootstrap-css@ *" data-semver="2.3.2" rel="stylesheet" href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" /> <script data-require=" angular.js@1.0.7 " data-semver="1.0.7" src="http://code.angularjs.org/1.0.7/angular.min.js"></script> <script data-require=" ui-bootstrap@0.3.0 " data-semver="0.3.0" src="http://angular-ui.imtqy.com/bootstrap/ui-bootstrap-tpls-0.3.0.min.js"></script> <link rel="stylesheet" href="style.css" /> <script src="script.js"></script> </head> <body> <div ng-view></div> </body> </html>
JS:
app.controller("DemoCtl", ["$scope", "$dialog", function($scope, $dialog){ $scope.launch = function() { var d = $dialog.dialog({ backdrop: true, keyboard: true, backdropClick: true, templateUrl: "dialog.html", controller: "DialogCtl" }); d.open().then(function(result) { console.log("d.open().then"); }); }; }]);
Jason source share