zniszcz dyrektywę / zakres dziecka na zniszczenie zakresu

Mam dyrektywę, która kompiluje inną dyrektywę i dołącza ją do ciała z takim samym zakresem. Nie będzie to ta sama lokalizacja, co dyrektywa „macierzysta”.

Kiedy dyrektywa nadrzędna zostanie zniszczona, czy jest jakiś sposób na zniszczenie dyrektywy dziecięcej i zakresu? Pytam, ponieważ po sprawdzeniu DOM dyrektywa dotycząca dzieci nadal istnieje.

Obecnie podłączam się do zdarzenia $ destroy, ale byłem ciekawy, czy można go obsłużyć automatycznie.

jsFiddle: http://jsfiddle.net/FPx4G/1/

Dziecko zostaje tam, gdy przełączasz rodzica, ale chciałbym zostać zniszczony. Jaka byłaby najlepsza metoda, aby to zrobić?

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;
    }
}

Normalnie po prostu miałbym element podrzędny w szablonie oryginalnej dyrektywy, aby był poprawnie umieszczony. Problem sprowadza się do radzenia sobie z indeksem Z. Element macierzysty znajduje się w kontenerze, który można przewijać, więc dziecko (w jednym przypadku azwyczaj rozwijana) byłaby ukryta / odcięta, gdyby była większa niż kontener. Aby temu przeciwdziałać, zamiast tego tworzę rzeczywiste dziecko w treści dokumentu i pozycjonuję je względem rodzica. Będzie również nasłuchiwać zdarzeń przewijania w celu zmiany pozycji. Mam to wszystko działa i jest w porządku. Tak się dzieje, gdy muszę usunąć rodzica ... dziecko wciąż tam jest.

questionAnswers(1)

yourAnswerToTheQuestion