この plnkrは、「AngularJS - ダイアログでコントローラーを開く (動的に読み込まれるテンプレート) 」という質問に答えるときに作成しました。
サンプル アプリが行うことは、テンプレートに基づいて独自のコントローラーを使用してダイアログ ボックスを起動することだけです。ダイアログが最初に起動すると、すべてが期待どおりに機能します。ただし、ダイアログを閉じた後、ダイアログを再起動しようとすると、モーダル背景が表示されますが、ダイアログは表示されません。then
javascript コンソールで、返された promiseのメソッドがすぐに呼び出されることを確認できます$dialog.open()
が、背景は削除されず、エラーは報告されません。私は完全に困惑しています。
ダイアログは angular-ui ブートストラップドキュメント ページで繰り返し開いたり閉じたりできます。
どこで私は間違えましたか?
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"); });
};
}]);