在我的 $onInit() {
this.$rootScope.$on('CANCELLED', (event) => {
this.EventService.getEventsCurrentUser('own')
.then((result) => {
this.ownEvents = result
})
})
}
中,我选择了传播事件:
.et_pb_button_module_wrapper{
display: table-row;
height: 100px;
}
.et_pb_button_module_wrapper .a{
display: table-cell;
vertical-align: middle;
width: 200px;
height: 100px;
border: 1px solid #000;
line-height: 1.2;
}
如何一次停止传播?
答案 0 :(得分:1)
您需要"取消注册"通过调用return函数手动$rootScope
个事件。您可以使用this.$onDestroy
在组件生命周期中执行此操作。每次$rootScope
执行时,$rootScope.$on()
个事件会反复绑定。这就是你的事件被多次调用的原因。
var myApp = angular.module('myApp',[]);
myApp.controller('MyCtrl', function ($scope, $rootScope) {
var registerScope = null;
this.$onInit = function () {
//register rootScope event
registerScope = $rootScope.$on('CANCELLED', function(event) {
console.log("fired");
});
}
this.$onDestroy = function () {
//unregister rootScope event by calling the return function
registerScope();
}
});
请同时查看此答案,以帮助您了解$rootScope
和$scope
事件背后的逻辑: