Javascript 检测何时删除DOM节点?

Javascript 检测何时删除DOM节点?,javascript,angularjs,Javascript,Angularjs,我正试图编写一个指令,以确保在任何给定的时间只有一个元素保持活动状态 指令:showOnlyOne 描述:附加到dom节点,并确保一次只能看到一个附加了此指令的dom节点。 用法: 使用angular(最佳实践)倾听的方式是scope.on(“$destroy”,fn) 为什么不将一个和两个元素放在一个数组中,如果其中一个元素已被删除,则使用ng change跟踪更改?当您从DOM中删除该元素时,如您在描述jqLite.remove()中所述,此时使用$broadcast/emit(传递的必需

我正试图编写一个指令,以确保在任何给定的时间只有一个元素保持活动状态

指令:showOnlyOne 描述:附加到dom节点,并确保一次只能看到一个附加了此指令的dom节点。
用法:


使用angular(最佳实践)倾听的方式是
scope.on(“$destroy”,fn)


为什么不将一个和两个元素放在一个数组中,如果其中一个元素已被删除,则使用ng change跟踪更改?当您从DOM中删除该元素时,如您在描述jqLite.remove()中所述,此时使用$broadcast/emit(传递的必需数据)事件并使用$on添加listner,您可以侦听that@PradeepMahdevu即使有这样的暗示,我还没有足够的智慧去理解在这种情况下如何使用ngChange来完成任务。为了进一步澄清,我无法控制调用的jqLite.remove(),因此无法在事件发生时添加自己的事件广播。(这发生在另一个框架中。)也许你可以为angular bootstrap项目签出accordion指令。还有什么其他框架?听起来像是一个
X-Y
问题,您应该提供更多关于实际情况和更高级别问题的详细信息
<body>
<div id="one" show-only-one></div>

<section> 
<div id="two" show-only-one></div>
</section>
</body>
angular.module('SWS')
.directive('swsOnlyOne', ['$log', '$interval', function($log, $interval) {
  var billies = [];
  return function(scope, elem, attrs) {
    if (billies.length > 0) {
      _.each(billies, function(b) {
        b.css('visibility', 'hidden');
      });
    }
    elem[0].addEventListener('DOMNodeRemoved', function(ev) {
      // THIS DOM EVENT WILL NEVER FIRE...
      if ('hidden' != elem.css('visibility')) {
        billies.splice(billies.indexOf(elem), 1);
        billies[billies.length].css('visibility', 'visible');
      }
    }, false);

    billies.push(elem);
  };
}]);
$scope.on("$destroy", function(event){
   // cleanup
});

// but can also be used on elements
elem.on("$destroy", function(event){
   // cleanup    
});