我在回答这个问题“ AngularJS - 在对话框中打开控制器(动态加载模板) ”时创建了这个 plnkr。
示例应用程序所做的只是启动一个基于模板的对话框,并带有它自己的控制器。对话框第一次启动时,一切都按预期工作。但是,如果我尝试重新启动对话框,在将其关闭后,会显示模态背景但没有对话框。在 javascript 控制台中,您可以看到then
返回的 promise 上的方法$dialog.open()
被立即调用,但背景没有被移除,也没有报告错误。我完全感到困惑。
该对话框可以在 angular-ui bootstrap文档页面上反复打开和关闭。
我哪里做错了?
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.github.io/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"); });
};
}]);