我正在为一个客户工作一个庞大的项目,所以为了使代码更清洁,我正在做一些返工。我有这部分代码:
var removeListener = $rootScope.$on('logoutEvent', function () {
changedAttribut = EditorialContentService.getChangedAttribut($scope.promotion, OLDPromo, hasUploadImage);
if (changedAttribut.length < 1) {
$rootScope.canClose = true;
} else {
$rootScope.canClose = false;
}
});
$scope.$on("$destroy", removeListener);
问题是,我需要将代码放在服务或工厂或任何其他建议中,以避免重复,因为它在许多控制器中使用。
答案 0 :(得分:0)
要么打电话
$rootScope.$on("$destroy", removeListener);
(而不是$ scope),它将在整个应用程序被销毁时删除侦听器(但这并不是真的需要,因为注册了$ on的事件会在他们注册的范围被销毁时自动删除) 或者从工厂中公开一个删除侦听器的函数,并在适当的范围破坏时调用它:
// inside the factory
return {
destroy: function () {
removeListener();
}
};
// inside the appropriate controller
$scope.$on('$destroy', thatFactory.destroy);