范围销毁上的销毁指令/子范围

2024-04-24

我有一个指令,它编译另一个指令并将其附加到传递的相同范围的主体中。这不会与“父”指令位于同一位置。

当父指令被销毁时,是否有某种方法可以让子指令和作用域也被销毁?我问这个问题是因为在检查 DOM 后,子指令仍然存在。

目前,我连接到了父母 $destroy 事件,但很好奇它是否可以自动处理。

js小提琴: http://jsfiddle.net/FPx4G/1/ http://jsfiddle.net/FPx4G/1/

当你切换父级时,孩子会留在那里,但我希望被摧毁。最好的方法是什么?

html:

<div ng-app="app">
    <div ng-controller="ParentCtrl">
        <button data-ng-click="toggleParent()">Toggle Parent</button>
        <div data-ng-switch data-on="displayDirective">
            <div data-ng-switch-when="true">
                <div class="parentDirective">Parent Directive</div>
            </div>
        </div>
    </div>
</div>

javascript:

angular.module('app', [])
    .directive("parentDirective", function($compile){
        return {
            restrict: 'C',
            link: function(scope, element){
                var secondDirective = angular.element(document.createElement("div"));
                secondDirective.addClass("childDirective");

                document.body.appendChild(secondDirective[0]);

                $compile(secondDirective)(scope);
            }
        }
    })
    .directive("childDirective", function(){
        return {
            restrict: 'C',
            template: '<div>Child Directive</div>',
            link: function(scope, element){
                scope.$on("destroy", function(){
                   alert(1); 
                });
            }
        }
    });


function ParentCtrl($scope){
   $scope.displayDirective = true;
    $scope.toggleParent = function(){
        $scope.displayDirective = !$scope.displayDirective;
    }
}

通常,我只需将子元素放在原始指令的模板中,以便其正确定位。这个问题实际上归结为处理 z-index。父元素位于可以滚动的容器中,因此子元素(在一种情况下是custom如果它比容器大,下拉菜单)将被隐藏/切断。为了解决这个问题,我在文档正文中创建实际的子项,并将其相对于父项定位。它还会侦听滚动事件以重新定位自身。我已经一切正常了,而且一切都很好。当我需要删除父级时就会发生这种情况......孩子仍然在那里。


directive("childDirective", function(){
    return {
        restrict: 'C',              
        template: '<div >Child Directive</div>',                
        link: function(scope, element){                  
            scope.$on("$destroy",function() {
                element.remove();
            }); 
        }
    }
});

更新的小提琴:http://jsfiddle.net/C8hs6/ http://jsfiddle.net/C8hs6/

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

范围销毁上的销毁指令/子范围 的相关文章

  • 如果文本过滤器在 ng-repeat 中没有返回结果,则显示消息

    假设我们有一个带有文本过滤器的 ng repeat
  • html 文件上传的默认文件夹和文件名

    我正在使用 jQuery Ajax 插件将图像文件从本地计算机上传到网络服务器 该网页呈现一个标记为Upload Image File 用户按下按钮并从浏览器显示的弹出目录列表中选择要上传的文件 服务器上的 PHP 存储图像文件 一切正常
  • 如何将 TextArea 放入表 td 中?

    我想放置一个textarea内表td 不幸的是 它仍然是单行的 td align right valign top td td td
  • 如何在Android上获取角度中的按键事件?

    我们如何在 Android 上的 Angular 中获取按键事件及其值 我使用phonegap Cordova Angular JS
  • 防止文本环绕浮动图像

    我目前有一个向左浮动的图像 以及位于其右侧的一段文本 该文本块当前不是浮动的 它只是位于 HTML 中的图像之后 因此 当它变得更长时 它最终会踢到图像下方的左侧以继续 如何才能使文本块始终保持在图像的右侧 以便图像和文本的行为就像两个并排
  • IE8 和怪异模式

    IE8 是否像 IE6 7 一样以怪异模式运行 我有一个网页 其中有一些非常奇怪的代码 内容以填充和负边距居中 它在 IE6 7 和其他浏览器中可以正常工作 但在 IE8 中 内容区域的宽度只有一半并且不居中 怪异模式的标志 源代码在 DO
  • angularjs - 当 $interval 触发时 ng-show 不会更新类

    尝试使用 Angular 中的 interval 来使用 ng show 更改列表中当前可见的项目 检查 html 我注意到角度将 ng show 从 true false 更改 但它并没有删除 ng hide 类 html 很简单 h1
  • CSS隐藏滚动条,但元素可滚动

    我有一个名为 items 的元素 元素内的内容更长 比元素高度 我想让它可滚动但隐藏滚动条 我该怎么做呢 div class left side div class items style display block width 94 ma
  • 防止拖动不可拖动元素时出现重影?

    我正在创建一个利用 HTML5 拖放 API 的网站 但是 为了增加用户体验 我想在用户拖动不可拖动元素时防止出现重影 这可能吗 此外 几乎每个元素似乎 可拖动的 默认情况下 人们可以单击然后快速拖动浏览器中的几乎任何元素 这会创建一个重影
  • 使用 JavaScript 动态创建复选框?

    我正在尝试使用以下 HTML JavaScript 动态创建一个复选框 有什么想法为什么它不起作用吗 div div
  • 如何使用 Next Script 精确控制脚本标签的插入位置

    我目前正在尝试将第三方脚本添加到我的 Next js 应用程序中 该脚本会在脚本标签正下方插入一个 iframe 所以我需要精确控制脚本标签在页面上的位置 我目前正在使用下一个 脚本 https nextjs org docs api re
  • 音频标签的 Html5 惰性“onplay”事件处理程序?

    使用新的 Html5 音频标签 onplay 事件似乎仅在第一次播放音频时触发 在此示例中 当单击 播放 时 音频将开始并显示一个显示 正在播放 的警报弹出窗口 当音频结束并再次单击 播放 时 音频会再次开始 但不会触发警报 我在这里错过了
  • UI 路由器和查询参数

    我使用 Angular UI Router 和 Elasticsearch 构建了一个小型搜索应用程序 并尝试在结果页面的 url 中获取 UI Router 查询参数 我正在努力实现这个目标 domain com search user
  • HTML 表单未运行 (withSuccessHandler) 函数

    我在 Google App Script Sheets 中有一个 HTML 表单 它要求用户提供日期值 然后提交该值 HTML 表单运行 唯一的问题是 obj 不记录 我不明白这是为什么 HTML
  • CONDITION CSS 区分 IE6 到 IE7

    我想声明一个不同于 ie6 和 ie7 的风格 但我的CSS条件被IE7识别为IE6 我用的是XP和explorer 7 这是我使用的代码
  • 复合组件和 CSS

    I have newcss css formdiv width 30 margin 150 auto 和复合组件
  • 为什么 WebView 中的 dataWithPDFInsideRect 不能在 Mavericks 上创建高质量的 PDF?

    Run 示例项目 https github com tvarghese TestWebView并观察桌面上生成的输出 PDF 名为保存网页 pdf 粘贴感兴趣的代码片段 NSURL url NSBundle mainBundle URLFo
  • JavaScript 中的安全数据

    我必须为 Web 测试创建生成器 使用 HTML 和 JavaScript 测试必须离线和在线进行 正确答案和分数评估必须是生成的测试的一部分 最终用户的分数仅发送到服务器 无法在服务器上进行评估 并且服务器对问题一无所知 它只保存最终分数
  • 无需画布/显示器即可拍摄隐形 WebRTC/视频照片

    我读了拍摄静态照片 https developer mozilla org en US docs Web API WebRTC API Taking still photos来自 MDN 的描述如何从网络摄像头捕获照片 使用视频元素和med
  • 数据表 - 从 AJAX 源过滤数据

    我有一个数据表 正在从 api 获取数据 现在我的状态是活动的 非活动的 如果标志是活动的 那么我需要在数据表中显示 否则我不应该显示过期的 这是我的fiddle https jsfiddle net lakshmipriya001 qLp

随机推荐

  • 关闭文件夹/命名空间约定

    我看到人们在谈论烦恼Visual Studio 自动创建与项目文件夹相对应的命名空间 https stackoverflow com questions 1289425 should i stop fighting visual studi
  • 如何使用 conda 卸载 r-essentials?

    最近 我安装了r essentials using conda命令 conda install c r r essentials正如这个网址中所描述的 https anaconda org r r essentials https anac
  • Angular2 条件路由

    这可能是一个基本问题 但是在 Angular2 中是否有任何方法可以进行条件路由 或者 有人会在路由器之外这样做吗 我知道 ui router 有一定的能力做到这一点 但我在 Angular2s 路由器中没有看到类似的东西 如上所述 角路线
  • 通过值获取 std::queue 中元素的索引

    有没有一种简单的方法来获取元素在 a 中的位置std queue通过它在 C 中的值 例如 std queue
  • 重新声明第 3 方库中不正确的打字稿类型

    我正在使用带有 types winston 类型的winston 3 0 这些类型尚未完全兼容 并且我遇到了类型中的错误 我不知道如何纠正 这是我的代码 记录器 ts export function middleware express H
  • Show 的新实例声明

    我正在尝试在 Haskell 中为我创建但未成功创建的新数据类型添加实例声明 到目前为止我已经尝试过 data Prediction Prediction Int Int Int showPrediction Prediction gt S
  • 使用 Heroku 拒绝关系 django_migrations 的权限

    在尝试在 Heroku 上使用 django 迁移数据库更改时 我得到 psycopg2 ProgrammingError permission denied for relation django migrations 其他人已经能够通过
  • Prolog 中的匹配元组

    为什么Prolog匹配 X Xs 包含更多元素的元组 一个例子 test2 X Xs write X nl test2 Xs test2 X write X nl test
  • Z-index:如何使嵌套元素出现在其父元素下方

    这个小提琴应该说明这个问题 http jsfiddle net 5sqxQ 2 http jsfiddle net 5sqxQ 2 我希望子菜单出现在父菜单下方 然后我想用 JavaScript 来扩展它 以便在悬停在父 li 元素上时从下
  • 如何在使用 GPU 支持编译的 macOS 上安装 Xgboost?

    我尝试在过去 3 天的 MacOS Mojave 10 14 6 上安装集成了 GPU 支持的 xgboost 但是没有成功 我尝试了两种方法 pip 安装 xgboost xgboost 安装在这里 并且在没有 GPU 选项的情况下成功运
  • 使用 jQuery 获取视频的 Vimeo 缩略图

    我发现了类似的问题 但没有一个答案清楚 轻松地显示如何使用 jQuery 和 JSON 获取 vimeo 视频的缩略图 如果有人可以提供帮助 那就太好了 这就是我所得到的 但目前什么也没有显示 var vimeoVideoID 176315
  • 从 EditText 获取文本

    在我的应用程序中 我有一个 EditText 我想在它失去焦点时从中获取值 我该怎么做 Thanks 沿着这个思路应该可行 EditText setOnFocusChangeListener new View OnFocusChangeLi
  • 如何获取 Lottie 动画中可用的总帧数?

    我在我的 Android 应用程序中使用随机 Lottie 动画 我需要知道 Lottie 动画中使用的总帧数 根据总帧数 我想将动画从第一帧循环到特定帧 例如 如果 Lottie 文件包含 60 帧 那么我想执行从 1 到 我正在使用以下
  • 为什么因子中标签和水平的术语如此奇怪?

    不可设置函数的一个例子是labels 您只能在使用创建因子标签时设置它们factor 功能 没有labels lt 功能 因素中的 标签 和 水平 没有任何意义 gt fac lt factor 1 3 labels c one two t
  • 单击按钮,使用 jquery 检查标记所有复选框

    这就是我的表结构的样子 table tbody tr td class helpBod td tr tbody table
  • 是否存在间接函子?

    我正在寻找一个一元函子 它将取消引用它的参数并返回结果 我当然可以写一个 只是看起来有些东西应该已经存在了 所以给出代码 const auto vals 0 1 2 3 vector
  • PHP子查询选择朋友表中与我成为朋友的所有用户的个人资料

    在在这里发布问题之前我做了几个小时的研究 但没有运气 让我们从表中的示例开始 以便您轻松理解我想要做什么 在配置文件表中 我注册了配置文件 它们的 profile id 是 john123 joee smith hassey 上述个人资料彼
  • 是否应该使用 SDK 2.1 重建旧版 Android 应用程序?

    我有一个 Android 应用程序 它使用众所周知的遗留应用程序的策略 http developer android com intl fr guide practices screens support html strategies 它
  • 如何同时使用通配符(LIKE)和数组(IN)进行选择?

    在 SQL 中 如果您想使用通配符执行 SELECT 您可以使用 SELECT FROM table name WHERE field name LIKE value 如果您想使用可能值的数组 您可以使用 SELECT FROM table
  • 范围销毁上的销毁指令/子范围

    我有一个指令 它编译另一个指令并将其附加到传递的相同范围的主体中 这不会与 父 指令位于同一位置 当父指令被销毁时 是否有某种方法可以让子指令和作用域也被销毁 我问这个问题是因为在检查 DOM 后 子指令仍然存在 目前 我连接到了父母 de