我在控制器上有一个$ rootScope。$的代码。我注意到每次我加载/调用这个控制器时,$ rootScope。$ on监听器都会增加,这意味着它会在您访问控制器时无限期地添加和添加监听器。
我注意到它,当我通过$ rootScope。$调用它从另一个控制器发出时,$ rootScope。$ on中的函数被执行了几次,即使它只是一个发射/广播。
$rootScope.$on('listen', function() {
$scope.displayString();
});
$scope.displayString = function() {
console.log('test'); // This display 7 times because I visit the controller 7 times
}
是否有可能阻止它创建另一个监听器实例,这样,当已经有一个监听器,它不会产生一个新的。
尝试'$范围。$ on'将解决您的问题.. 如果您在控制器本身想,而不是全球.. –
我需要从另一个控制器 – devwannabe
调用它不能摧毁$ rootScope但你可以使用$范围。$ destroy()方法。它将清除所有绑定到$ scope的监听器。 –