简体   繁体   English

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

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

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

You can use a factory/service to register callback that would be called on controller destruction 您可以使用工厂/服务注册在控制器销毁时将调用的回调

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 http://plnkr.co/edit/ZJ2sbJSOyYZyQxAWzOxS?p=preview

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM