У меня есть директива атрибута, прикрепленная к элементу в одном из шаблонов моего приложения. Когда я удаляюсь от этого шаблона, связанный с ним контроллер получает событие destroy. Однако, похоже, эта директива также не принимает это событие. Есть ли способ, которым я могу получить его в рамках директивы?
Шаблон:
<div ng-controller="myController">
<div my-directive></div>
</div>
В контроллере:
$scope.$on('destroy', function(){
console.log('This fires just fine');
})
В функции связочной директивы:
scope.$on('destroy', function(){
console.log('This will not fire');
})
element.on('destroy', function(){
console.log('This will not fire either');
})
Я нашел вопрос от нескольких лет назад, что очень напоминает мой номер, но было отмечено как разрешено: https://github.com/angular/angular.js/issues/683.
Я столкнулся с аналогичной проблемой в какой-то момент и в итоге начал вещание по пользовательскому событию уничтожения, которое я прослушивал в области дочерних объектов. Не знаете, сколько «правил» оно сломалось, но это решило проблему ухода за детьми. –
А, это работает. Похоже, что должен быть лучший способ справиться с этим. – atzemis13
Согласен, он чувствует себя очень «взломанным». Я боролся с этим значительным количеством (особенно когда нужно «уничтожить» jQuery в смешанном приложении) и не смог найти лучшего способа. Хотелось бы услышать другие сообщения сообщества :) Это было лучшее, что я смог придумать после довольно много исследований и неудачных попыток. –