我正在将一个事件从我的导航栏控制器广播到另一个控制器,但是如果我多次初始化控制器(当我在应用程序中前后移动时),则在我的控制器上执行的函数$on
事件运行多次,因为它已注册多次。
$rootScope.$on('submitBookingDialog', function(){
submitBookingDialog();
});
我怎样才能防止submitBookingDialog()
发生不止一次?
I found 一个办法 https://stackoverflow.com/a/18355215/1020551,但不知道是否理想。
首先,您是否需要将事件发送到$rootScope
?如果没有,那么您可以在$scope
。每当控制器作用域被销毁时,事件处理程序就会被销毁。然后您可以通过以下方式发送事件$scope.$emit
or $scope.$broadcast
取决于您的控制器层次结构。
话虽这么说,要销毁事件侦听器,您所需要做的就是调用注册侦听器时返回的取消注册函数:
var offSubmitBookingDialog = $rootScope.$on('submitBookingDialog', function(){
submitBookingDialog();
});
$scope.$on('$destroy', function() {
// Call the deregistration function when the scope is destroyed
offSubmitBookingDialog();
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)