gpt4 book ai didi

angularjs - 使用 $dialog 多次打开同一个对话框

转载 作者:行者123 更新时间:2023-12-04 23:55:29 25 4
gpt4 key购买 nike

我创建了 this plnkr回答这个问题时' AngularJS - open controller in a dialog (template loaded dynamically) '。

示例应用程序所做的就是启动一个基于模板的对话框,它有自己的 Controller 。对话框第一次启动时,一切都按预期进行。但是,如果我尝试重新启动对话框,在关闭对话框后,会显示模态背景但没有对话框。在 javascript 控制台中,您可以看到 then $dialog.open() 返回的 promise 的方法立即调用,但不会删除背景并且不会报告任何错误。我完全不知所措。

该对话框可以在 angular-ui bootstrap 上反复打开和关闭 documentation 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"); });
};
}]);

最佳答案

我找到了问题所在。它与使用 <a> 有关标签打开对话​​框。点击 <a>标记导致触发位置更改。该对话框通过关闭自身来处理位置更改,如下所示。

  this.handleLocationChange = function() {
self.close();
};

我不确定为什么第一次点击 <a> 时不会发生这种情况。标签,但它肯定会发生在所有后续调用中。

你可以在这个 plunker中看到如果你使用一个按钮,它每次都能正确打开。

希望这可以帮助!我会试着弄清楚为什么它不会在第一次中断。

编辑

位置变化实际上非常糟糕。它似乎是循环的,我认为是 10 个摘要的最大 Angular 。仍然不确定为什么它不会在第一次点击时进行位置更改。

关于angularjs - 使用 $dialog 多次打开同一个对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16941770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com