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'
}
})