我正在将一个事件从我的导航栏 Controller 广播到另一个 Controller ,但是如果我多次初始化 Controller (当我前后移动应用程序时),在我的 $on< 上执行的函数
事件运行多次,因为它被注册了多次。
$rootScope.$on('submitBookingDialog', function(){
submitBookingDialog();
});
如何防止 submitBookingDialog()
发生不止一次?
我找到了 a solution , 但我不知道它是否理想。
最佳答案
首先,是否需要在$rootScope
上发送事件?如果没有,那么您可以在 $scope
上注册您的事件处理程序。只要您的 Controller 范围被销毁,事件处理程序就会被销毁。然后,您将通过 $scope.$emit
或 $scope.$broadcast
发送事件,具体取决于您的 Controller 层次结构。
也就是说,销毁事件监听器所需要做的就是调用注册监听器时返回的注销函数:
var offSubmitBookingDialog = $rootScope.$on('submitBookingDialog', function(){
submitBookingDialog();
});
$scope.$on('$destroy', function() {
// Call the deregistration function when the scope is destroyed
offSubmitBookingDialog();
});
关于javascript - 在 AngularJS 中只注册一次事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24490429/