【发布时间】:2014-09-19 21:44:52
【问题描述】:
我在回答“AngularJS - open controller in a dialog (template loaded dynamically)”这个问题时创建了this plnkr。
示例应用所做的只是启动一个基于模板的对话框,并带有它自己的控制器。对话框第一次启动时,一切都按预期工作。但是,如果我尝试重新启动对话框,在将其关闭后,会显示模态背景但没有对话框。在javascript控制台你可以看到$dialog.open()返回的promise上的then方法被立即调用了,但是背景没有被移除,也没有报错。我完全迷惑了。
对话框可以在angular-ui bootstrapdocumentation page上反复打开和关闭。
我哪里做错了?
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"); });
};
}]);
【问题讨论】:
-
我分叉了你的 plunker 并更新了它,但无法解决问题。 plnkr.co/edit/E6KCrZZflP8zap3F180H 似乎一旦 _open 在第一次打开后被设置为 false,它就永远不会被重置为打开
-
希望有人能够让我们知道发生了什么。我同意有些东西没有正确设置,但肯定不是很明显。
标签: angularjs angular-ui-bootstrap