2016-01-19 3 views
0

У меня есть директива атрибута, прикрепленная к элементу в одном из шаблонов моего приложения. Когда я удаляюсь от этого шаблона, связанный с ним контроллер получает событие 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.

+0

Я столкнулся с аналогичной проблемой в какой-то момент и в итоге начал вещание по пользовательскому событию уничтожения, которое я прослушивал в области дочерних объектов. Не знаете, сколько «правил» оно сломалось, но это решило проблему ухода за детьми. –

+0

А, это работает. Похоже, что должен быть лучший способ справиться с этим. – atzemis13

+0

Согласен, он чувствует себя очень «взломанным». Я боролся с этим значительным количеством (особенно когда нужно «уничтожить» jQuery в смешанном приложении) и не смог найти лучшего способа. Хотелось бы услышать другие сообщения сообщества :) Это было лучшее, что я смог придумать после довольно много исследований и неудачных попыток. –

ответ

0

Оба параметра element.on('$destroy) и scope.$on('$destroy') будут вызываться в директиве, когда родительский элемент уничтожается. Проблема: 'destroy' вместо '$destroy'.

 Смежные вопросы

  • Нет связанных вопросов^_^