angular 事件侦听器
angular event listener
我正在为客户处理一个大型项目,因此为了使代码更清晰,我正在做一些返工。我有这部分代码:
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);
问题是,我需要将代码放在服务或工厂或任何其他建议中,以避免重复,因为它在许多控制器中使用。
要么打电话
$rootScope.$on("$destroy", removeListener);
(而不是 $scope),它将在整个应用程序被销毁时删除侦听器(但这并不是真正需要的,因为在 $on 注册的事件在它们注册的范围被销毁时会自动删除),
或者从工厂公开一个函数来移除监听器,并在适当的范围销毁时调用它:
// inside the factory
return {
destroy: function () {
removeListener();
}
};
// inside the appropriate controller
$scope.$on('$destroy', thatFactory.destroy);
我正在为客户处理一个大型项目,因此为了使代码更清晰,我正在做一些返工。我有这部分代码:
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);
问题是,我需要将代码放在服务或工厂或任何其他建议中,以避免重复,因为它在许多控制器中使用。
要么打电话
$rootScope.$on("$destroy", removeListener);
(而不是 $scope),它将在整个应用程序被销毁时删除侦听器(但这并不是真正需要的,因为在 $on 注册的事件在它们注册的范围被销毁时会自动删除), 或者从工厂公开一个函数来移除监听器,并在适当的范围销毁时调用它:
// inside the factory
return {
destroy: function () {
removeListener();
}
};
// inside the appropriate controller
$scope.$on('$destroy', thatFactory.destroy);