AngularJS 不清理由 ng-include 创建的子作用域

2024-03-14

我有以下用例 - 我提供一个对话服务,根据上下文放置不同的内容。在服务方法中,我手动编译一个 dom 元素并使用它来使用 jquery ui 显示对话框。代码如下:

var _view = jQuery('<div id="config-dialog"><span ng-include="\'' +  $scope.configView + '\'" ng-controller="' + $scope.configController + '"></span></div>');
var _compiled = $compile(_view.contents())($scope);

然后我触发一个范围事件,该事件应该由控制器中定义的范围函数处理

$scope.$broadcast('config-open', $scope.config);

然后我打开对话框,用户执行某些操作并关闭对话框。当对话框关闭时,我从 DOM 中删除“config-dialog”元素。像这样:

$(this).dialog("destroy");
jQuery('#config-dialog').remove();

然而,下次打开对话框并实例化新控制器时,我看到“配置打开”被处理了两次,再次打开对话框时,它被处理了 3 次。这意味着附加到我动态创建的 ng-include 的范围不会被破坏。我用 Batarang 进行了调试,发现 ng-include 创建的子作用域确实没有被清理。 AFAIK AngularJS 作用域与 dom 元素相关联,当我删除该元素时,该作用域应该被垃圾收集,但这种情况不会发生。 我的问题是 - AngularJS 是否应该清理我的案例中的范围。我做错了什么,有没有更合适的方法来实现我的用例?


控制器仅用于对话框内容。确定和取消按钮 对话框的处理是在对话框内容之外进行的

我想你的 HTML 看起来像这样:

<div class="dialog">
    <div class="dialog-content" ng-controller="yourcontroller">
       ...your content here 
    </div>

    <button id="btnClose">Close</button>  //your button is outside your controller      
</div>

Try: angular.element(domElement).scope()像这样(使用 jquery 和委托事件,因为你正在动态创建 DOM):

$(document).on("click","#btnClose",function(){
    var dialog = $(this).closest(".dialog");
    //call this to destroy the scope.
    angular.element(dialog.find(".dialog-content")[0]).scope().$destroy();
    //or angular.element(dialog[0]).scope().$destroy(); depending on where you attach your scope.
    //Destroy dialog
    dialog.dialog("destroy");
    dialog.remove();
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS 不清理由 ng-include 创建的子作用域 的相关文章

  • 突出显示 Html 文档中不同标签的文本

    我是新来的角js 现在我正在突出显示 HTML 文档中的文本 So 我的代码是这样的 var InstantSearch highlight function container highlightText var internalHigh
  • OpenLayers:放大或缩小后,被破坏的特征会重新出现

    我有一个 OpenLayers Bing 地图应用程序 可以显示危险废物站点 用户可以单击链接来切换地图上站点的子站点 当我通过调用层上的 destroyFeatures 来关闭子站点 它们是向量层上的点 时 它们会按预期消失 但是 如果我
  • 无法实现模块模式

    我正在尝试重现 Douglas Crockford 所著的 Javascript The Good Parts 一书中的一些代码 这个想法是使用闭包进行对象封装并避免Javascript固有的全局变量 var serial maker fu
  • 为什么 foo.hasOwnProperty('__proto__') 等于 false?

    var foo bar 5 Why is foo hasOwnProperty proto 等于false 它不能来自原型链中更高层的任何对象 因为它是特定于这个对象的 EDIT 有些答案说它已开启Object prototype 但我不明
  • 定时器内嵌套异步等待 - 不返回所需的值

    我必须使用 Mocha 和 chai 测试来测试端点的响应 下面是相同的代码 async function getData userId let response let interval setInterval async gt resp
  • 有没有等效的 gulp 插件来执行“grunt Bower”?

    With grunt 我可以使用命令grunt bower 由 提供grunt bower requirejs https github com ck86 gulp bower files 自动生成RequireJS我本地的配置文件bowe
  • JSLint 错误:意外的“这个”

    无法理解为什么 JSLint 对我的使用感到惊讶this在下面的代码中 function testConstr x use strict this joker Whyyy sooo seriousss this x x 对于这两个属性分配
  • 未捕获的安全错误:阻止了具有原点的框架...访问具有原点的框架

    我已经为 SAP 解决方案 无论什么 制作了一个组件 该组件通过 iframe 嵌入到报告中 在 SAP 平台 BO 上部署报告后 我收到此错误 在 Chrome 上 但在 IE 或 FF 上也不起作用 Uncaught SecurityE
  • Antd 选择搜索框未呈现匹配项

    我有产品数据 我正在使用搜索值过滤数据 然后使用过滤后的数据呈现选项 产品数据作为道具来自全局 redux 存储 由于某种原因 下拉列表仅在搜索值为空时显示数据 当我开始输入时 filteredData已更新 组件也重新渲染 但选项不显示任
  • 如何在没有 DOM 的情况下将 javascript 作为 node.js 脚本运行?

    https github com jasondavies d3 cloud https github com jasondavies d3 cloud是一个使用 D3 库的 javascript 文字云 这是一个交互式演示 http www
  • 使用 Google 地图 API 进行反向地理编码

    我正在研究 JavaScript Google Map API 版本 3 更准确地说 正在研究反向地理定位 在 的帮助下官方文档 http code google com intl fr apis maps documentation ge
  • 主干集合排序

    我制作了我的第一个主干应用程序 但在集合排序方面遇到了一些问题 使用这个后 var SortedFriends MyFriends sortBy function friend return friend get uid console l
  • 防止 Bootstrap IE 下拉列表在滚动条单击时关闭

    在 IE 中 单击下拉菜单滚动条时 下拉菜单将关闭 当您使用鼠标滚轮滚动它时 效果很好 这是代码层链接 https www codeply com go Uh8qadr3q2 https www codeply com go Uh8qadr
  • 如何制作实时jquery效果?

    我想制作一个实时提要阅读器 并且我想要一个解决方案 使新项目无需刷新页面即可出现 并且具有像friendfeed一样的滚动效果 你可以在这里看到我在说什么 http www vimeo com 4029954 http www vimeo
  • Google 折线图添加对象数组

    我有一个通过解析 JSON 字符串创建的对象数组 var measurementData Html Raw JsonConvert SerializeObject this Model Item1 var stringifiedData J
  • 响应覆盖 div 下的链接

    场景是这样的 我已经构建了一个顶部导航原型 它需要在其顶部有一个覆盖 透明 PNG 图像 目前它覆盖了大约 1 3 的链接 请看下面 有什么方法可以让前 1 3 的链接做出响应 即使有一个 div div 部分覆盖它们 覆盖层不会包含任何可
  • Angular 2 变更检测是如何工作的?

    在 Angular 1 中 更改检测是通过对 scope 层次结构进行脏检查来进行的 我们会在模板 控制器或组件中隐式或显式创建观察者 在 Angular 2 中 我们不再有 scope 但我们确实重写了 setInterval setTi
  • html 下钻下拉所选值未插入 MYSQL

    我有两个下拉列表 首先从数据库下拉填充 根据第一个下拉列表的选定值从数据库填充第二个下拉列表 document ready function c change function var c1 c selected text if c1 aj
  • ESLint 如何集成到 Create React App 中?

    当我跑步时npx create react app some name 为我创建了一个简单的 React 项目 当我随后窥视package json 似乎有一些 ESLint 存在的证据 因为有 eslintConfig extends r
  • CSS 未使用 req.params 或其他内容加载

    我对节点 表达等非常陌生 我制作了一个博客应用程序 但遇到了问题 我正在使用 mongoose node express 和 ejs 当我打电话时 router get posts function req res Post find fu

随机推荐

  • 获取Enum值的名称

    我正在尝试创建一个函数 我们可以在其中获取枚举值的名称值 例如 Get Enum ValueName DayOfWeek 0 这将返回 Sunday 但我的代码不起作用 它说类型未定义 Private Function Get Enum V
  • Powershell 脚本可以记录已扫描的文件并在下次运行时忽略它们?

    我正在尝试编写一个脚本 该脚本将递归扫描目录 带有 Error 扩展名的本地文件 然后通过电子邮件向一群人发送文件列表 我计划通过 Control M 运行此脚本 并让它每 20 分钟运行一次 我希望脚本记录自上次运行以来已扫描的文件 而不
  • 输入组和表单组之间的区别

    css类之间的使用有什么区别input group and form group在引导程序中 输入组是扩展的表单控件 使用输入组 您可以轻松地将文本或按钮添加到基于文本的输入中 例如 您可以根据需要添加 符号 作为 Twitter 用户名或
  • 将符合 ISO 8601 的字符串转换为 java.util.Date

    我正在尝试转换ISO 8601 http en wikipedia org wiki ISO 8601格式化字符串为java util Date 我找到了模式yyyy MM dd T HH mm ssZ如果与区域设置一起使用 则符合 ISO
  • 无法有趣地计算 R 中光栅堆栈上的像素级回归

    我正在处理栅格 我有一个带有 7n 层的 RasterStack 我想使用下面的公式计算像素级回归 我试图这样做raster calc 但我的功能失败并显示消息 lm fit x y 偏移量 偏移量 奇异 ok 奇异 ok 中的错误 0 非
  • 在单独的线程上运行 Log4Net 附加程序

    目前 我有自己的日志系统 其中日志本质上是一个队列 有一个单独的线程侦听该队列并执行所有实际的写入操作 系统处理大量日志消息 文件在几分钟内很容易超过 10 MB 大小 因此在调用线程中进行实际日志记录是不可行的 如果 log4net 已经
  • 在隐藏标签中播放声音

    我正在尝试在网页上设置声音 我找到了这段代码 这是工作代码 当div是可见的 但我想隐藏起来并工作 在这种情况下它不起作用 因为它被隐藏了style属性 如何让它不可见并同时播放声音 div style display none div 我
  • 在 CSS 中 .a.b 与 .a .b 不同吗?

    在我的 css 文件中是 a b不同于 a b 这是一个简单的问题 但它总是让我烦恼 我尝试过 但我想我会将其发布在这里 以防作为参考有用 在我的 css 文件中 a b 与 a b 不同吗 Yes a b是一个或多个具有两个类的元素 di
  • MySQL 连接器 ODBC odbc.ini“选项”标志值

    首先 感谢您花时间和精力阅读这个问题 我试图更好地理解 odbc ini 文件 在 Unix Linux 系统上 的 Option 属性中指定的值是如何确定的 在 MySQL 文档中搜索 Option 标志可以采用的值之后 我不确定如何得出
  • 基于标准 PHP 查询字符串的路由

    如您所知 Zend Framework v1 10 使用基于斜杠分隔的参数的路由 例如 server controllerName actionName param1 value1 param2 value2 问题是 如何强制 Zend F
  • Angular 5 - 复制到剪贴板

    我正在尝试实现一个图标 单击该图标会将变量保存到用户的剪贴板 我目前已经尝试了几个库 但没有一个能够做到这一点 如何在 Angular 5 中正确地将变量复制到用户的剪贴板 解决方案一 复制任何文本 HTML
  • 使用 PHP 动态创建对象,无需变量赋值

    我只是好奇在 PHP 中是否可以动态创建对象 我以为我以前见过它完成的 当然 我可以将它分配给一个变量 但只是想知道这是否可能 new className gt someMethod 当然 这会引发语法错误 所以显然它不是那样做的 如果可能
  • 关于如何在 Nginx 位置块部分使用正则表达式的指南?

    Nginx 正则表达式位置语法 正则表达式可以与 Nginx 位置块部分一起使用 这是通过 PCRE 引擎实现的 由于没有完整记录 该功能到底支持什么 Nginx 位置 Nginx 位置块部分有一个搜索顺序 一个修饰符 一个隐式匹配类型以及
  • AWS S3 中预签名 URL 的安全性如何?

    我计划将用户重定向到 S3 中存储的敏感资源的预签名 URL 这些是在检查用户权限后生成的 并且具有激进的超时 30 秒 然而 我担心的是 我的客户端计算机上存在的某些恶意软件是否有可能捕获 URL 并在 URL 的过期时间内仍然下载文件
  • 钥匙串数据存储在哪里?

    关于iOS中钥匙串的几点 安全保存用户名和密码 如果多个应用程序共享相同的代码签名条款和捆绑种子 ID 则它们可以共享数据 我的问题是 钥匙串数据存储在哪里 绝对在应用程序沙箱之外 我们可以处理它们吗 iOS 应用程序中钥匙串还有哪些用途
  • 如何在不使用域白名单的情况下隐藏Android PhoneGap中的地址栏?

    谁能告诉我如何隐藏 Android PhoneGap 中的地址栏 我正在尝试捕获图像 但图像功能在 PhoneGap 中不起作用 在浏览器中同样可以工作 所以 我想隐藏地址酒吧 是的 用这个小小的 Javascript 就可以做到这一点
  • 调试时静态变量初始值设定项的运行时评估中的奇怪现象

    当我从 Visual Studio 内部启动并附加调试器 F5 时 我的应用程序运行良好 但是当我启动应用程序而不附加调试器 Ctrl F5 或启动 exe 文件 时 我总是得到一个StackOverflowException幸运的是 它被
  • 你可以为ios设置带有FCM通知的thread-id吗

    Firebase FCM 消息支持tag对于 Android 这会导致新通知用具有相同标签的旧通知替换前一个通知 有没有办法在ios上做同样的事情 This answer https stackoverflow com a 43220782
  • 更改 form_for Rails 3.1 生成的 html 表单 id

    我有这个表格 生成下一个代码 html
  • AngularJS 不清理由 ng-include 创建的子作用域

    我有以下用例 我提供一个对话服务 根据上下文放置不同的内容 在服务方法中 我手动编译一个 dom 元素并使用它来使用 jquery ui 显示对话框 代码如下 var view jQuery div span span div var co