AngularJS 是否可以在另一个控制器中收听 $destroy ?

AngularJS Is it possible to listen to $destroy in another controller?

在我的应用程序中,当一个控制器被销毁时,它是否可以在另一个控制器中发出 $destroy 事件?

您可以使用 factory/service 注册将在控制器销毁时调用的回调

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