gpt4 book ai didi

javascript - AngularJS - $rootScope.$on - 多次执行

转载 作者:行者123 更新时间:2023-11-30 20:46:28 25 4
gpt4 key购买 nike

在我的 $onInit() 中,我选择了传播事件:

  $onInit() {
this.$rootScope.$on('CANCELLED', (event) => {
this.EventService.getEventsCurrentUser('own')
.then((result) => {
this.ownEvents = result
})
})
}

如何一次性停止传播?

最佳答案

您需要通过调用返回函数手动“取消注册”$rootScope 事件。您可以使用 this.$onDestroy 在组件生命周期中完成此操作。每次执行 $rootScope.$on() 时,$rootScope 事件都会一次又一次地绑定(bind)。这就是为什么您的事件被多次调用的原因。

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 事件背后的逻辑:

关于javascript - AngularJS - $rootScope.$on - 多次执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48642645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com