首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角$destroy在堆积

角$destroy在堆积
EN

Stack Overflow用户
提问于 2018-09-10 14:13:01
回答 1查看 35关注 0票数 2

我有两个控制器,一个有一个$destroy函数,当模型关闭时。

代码语言:javascript
复制
>  $scope.$on("$destroy", function() {
>        
>         var args = {};
>         $rootScope.$emit('refreshh', args);   
>     });

在另一个控制器里,我有

代码语言:javascript
复制
$rootScope.$on('refreshh', function(event, args) {
        console.log("modal closed");

    });

当我继续打开和关闭模型时,我会得到“模态关闭”,但是如果我从导航栏转到另一个页面(没有刷新页面),然后返回到该页面,我将得到“模态关闭”“模式关闭”,如果我重复这个过程,我将得到“模态关闭”“模式关闭”“模式关闭”,就像代码运行了X次一样。这可能是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-10 15:42:33

当您将$on侦听器绑定到$rootScope而不显式销毁该侦听器(见文档)时,则每次实例化第二个控制器时,它都会向$rootScope添加另一个相同的侦听器。在第二个控制器中,要么需要绑定到本地$scope,要么在第二个控制器被销毁时确保销毁侦听器。

第二控制人:

代码语言:javascript
复制
var deregisterListener = $rootScope.$on('refreshh', function(event, args) {
  console.log("modal closed");
});


$scope.$on("destroy", function() {
  deregisterListener();
});

没有这一点,您的$rootScope就会在每次实例化第二个控制器时安装一个侦听器,从而导致所有相同的侦听器一次触发。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52259749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档