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

2024-02-09

我创建这个 plnkr http://plnkr.co/edit/fdAdDNU9adtYrY9smQvU?p=preview在回答这个问题时’AngularJS - 在对话框中打开控制器(动态加载模板) https://stackoverflow.com/questions/16886356/angularjs-open-controller-in-a-dialog-template-loaded-dynamically/16887046#16887046'.

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

可以在 angular-ui bootstrap 上重复打开和关闭对话框文档页 http://angular-ui.github.io/bootstrap/#/dialog.

我哪里做错了?

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="[email protected] /cdn-cgi/l/email-protection" data-semver="1.0.7" src="http://code.angularjs.org/1.0.7/angular.min.js"></script>
    <script data-require="[email protected] /cdn-cgi/l/email-protection" 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 http://plnkr.co/edit/E6KCrZZflP8zap3F180H?p=preview如果您使用按钮,它每次都会正确打开。

希望这可以帮助!我会尝试找出为什么它第一次不会破裂。

EDIT

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 $dialog 多次打开同一个对话框 的相关文章

随机推荐

  • 如何修改子字符串?

    使用排序规则xxx german2 ci它治疗 and ue相同 是否有可能出现所有M nchen突出显示如下 输入示例 M nchen can also be written as Muenchen 输出示例 b M nchen b ca
  • Git - 递归删除文件扩展名

    我试图递归地删除文件扩展名 但无论我尝试什么 它都会失败 谢谢你的任何想法 ubuntu ubuntu laptop hh hh sdk src uboot hh git rm r cached o fatal pathspec src u
  • DirectShow 与 Media Foundation 进行视频捕捉?

    我正在尝试在视频捕获 监控 流媒体应用程序的这两个 API 之间进行选择 但我不确定哪个是最佳选择 一些背景知识 我需要它与各种视频采集卡 适配器一起使用 该应用程序可能会用 C 开发 因此本机 API 至关重要 性能很重要 因为我需要处理
  • 如何检查密码重置令牌是否已过期?

    我正在使用 ASP NET Identity 并且具有基本的忘记密码 重置密码功能 当您填写忘记密码的表单时 它会使用以下命令创建一个重置令牌 userManager GeneratePasswordResetTokenAsync user
  • 为什么 CoreBluetooth 一次又一次地发现相同的外设?

    我已经在 StackOverflow 上查看了类似的问题 但它们都处理由于收到扫描响应数据而对 CBManager 委托的 didDiscover 方法进行第二次调用 我的情况有所不同 我坐在家里的办公桌前 我的应用程序在 iPhone 6
  • 使用 matplotlib 对带有标签的点进行动画处理

    我有一个带有线条的动画 现在我想标记这些点 我试过plt annotate 我尝试过plt text 但标签不动 这是我的示例代码 import numpy as np import matplotlib pyplot as plt imp
  • 如何设置ScrollView内容的大小?

    现在 ScrollView ContentSize 属性是只读的 我该如何设置 ScrollView 内容的大小 在 UIScrollView 中可设置的属性完全相同 但不是 xamarin 形式 我有这个
  • JSON.stringify(response.json()) 和 response.text() 之间的区别

    将响应流转换为 JSON 后 两者是否完全相同 const responseA fetch endpointReturnsJson const textA await responseA text 在平行宇宙里 const response
  • 我们可以在 SVG 模板中渲染 Angular 组件吗?

    看到我们可以将模板文件另存为 svg而不是 html现在我想我可以制作 svg 组件 可以按如下方式使用 main component svg
  • Rails + Compass:与直接使用 haml + blueprint 相比的优势

    我有一些在 Rails 项目上使用 haml sass 的经验 我最近开始将它们与 blueprintcss 一起使用 我所做的唯一一件事是将 blueprint css 转换为 sass 文件 并从那里开始编码 我什至有一个轨道发电机 h
  • 事后实现接口

    我认为 以下内容无法在 Java 中完成 但我很乐意学习如何实现类似的东西 假设我们有一个类 C 它已在编译代码中使用 我们既不能更改该代码 也不能更改 C 的原始定义 进一步假设有一些有趣的代码可以重用 只要 C 实现接口 I 即可 事实
  • 如何获取 Android 设备内部下载文件夹路径? [复制]

    这个问题在这里已经有答案了 是否可以获取Android设备内部下载文件夹路径 如果设备有 SD 卡 您可以使用 Environment getExternalStorageState 如果您没有 SD 卡 您可以使用 Environment
  • PInvoke 返回带有二维数组的结构

    我有定义在的结构c questions tagged c 2b 2bWin32 DLL 如下所示 typedef struct matrix double data int m int n Matrix 并且有一个函数 Matrix get
  • 尝试运行 TensorFlow 时 CUDNN_STATUS_NOT_INITIALIZED

    我已经在带有 Cuda 9 0 和 CuDNN 7 0 5 以及普通 Python 2 7 的 Ubuntu 16 04 上安装了 TensorFlow 1 7 尽管它们的 CUDA 和 CuDNN 示例都运行良好 并且 TensorFlo
  • 如何在C++中输出欧元符号

    我试图为一个计算出租车费用的程序输出一个 Eurosign 然后将其转换为美元或欧元 规范的一部分是我必须输出 Eurosign 我已经尝试过 Unicode 但我没有任何运气 任何帮助将不胜感激 谢谢 这是我的代码 void produc
  • Visual Studio 2012“扩展和更新”“无法连接到远程服务器”

    不幸的是 过去几个月的情况就是如此 我无法安装新的或更新的软件包工具 gt 扩展和更新我尝试了一切 但无法找到原因 我试过了 访问 NuGet 并从 下载包 包管理器控制台 安装包 SUCCESS 使用 Web 浏览器访问存储库 Visua
  • Boost asio,单个 TCP 服务器,多个客户端

    我正在创建一个 TCP 服务器 它将使用 boost asio 它将接受来自许多客户端的连接 接收数据并发送确认 问题是我希望能够接受所有客户 但我一次只想与一个客户合作 我希望所有其他事务都保留在队列中 Example 客户端1连接 客户
  • 使用 spring-data-jpa 自定义 ItemReader

    我正在使用现有实体和存储库创建一个 Spring 批处理项目 我需要使用自定义ItemReader用于使用现有 jpa 存储库读取数据的作业 定制阅读器 public class InMemoryReader implements Item
  • 在 INSERT 之后使用 OUTPUT 将标识列的值获取到(非表值)变量中

    给出以下简单的测试表 CREATE TABLE dbo Test Id bigint IDENTITY 1 1 NOT NULL Name varchar 50 NULL 我想在之后将标识列的值放入标量变量中INSERT使用OUTPUT条款
  • 使用 $dialog 多次打开同一个对话框

    我创建这个 plnkr http plnkr co edit fdAdDNU9adtYrY9smQvU p preview在回答这个问题时 AngularJS 在对话框中打开控制器 动态加载模板 https stackoverflow co