AngularJS Возможно ли слушать $destroy в другом контроллере?

В моем приложении, когда контроллер уничтожается, возможно ли событие $destroy, которое он генерирует в другом контроллере?

1 ответ

Решение

Вы можете использовать фабрику / сервис для регистрации обратного вызова, который будет вызываться при уничтожении контроллера

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope, notifyService) {
  $scope.logs = []
  notifyService.callback = function(){
    $scope.logs.push('controller destroyed on: ' + new Date().toString())
  }
});

app.controller('directiveController', function($scope, notifyService){
  $scope.$on('$destroy', notifyService.callback)
})

app.service('notifyService', function(){
  this.callback = angular.noop
})

app.directive('toggleDirective', function(){
  return {
    template: "<div>I'm directive with controller that will be destroyed</div>",
    controller: 'directiveController'
  }
})

http://plnkr.co/edit/ZJ2sbJSOyYZyQxAWzOxS?p=preview

Другие вопросы по тегам