调试代码后,我创建了自己的函数,就像“blesh”的答案一样。所以这就是我所做的
MyModule = angular.module('FIT', [])
.run(function ($rootScope) {
// Custom $off function to un-register the listener.
$rootScope.$off = function (name, listener) {
var namedListeners = this.$$listeners[name];
if (namedListeners) {
// Loop through the array of named listeners and remove them from the array.
for (var i = 0; i < namedListeners.length; i++) {
if (namedListeners[i] === listener) {
return namedListeners.splice(i, 1);
}
}
}
}
});
因此,通过将我的函数附加到 $rootscope 现在它可供我的所有控制器使用。
在我的代码中我正在做
$scope.$off("onViewUpdated", callMe);
谢谢
编辑: AngularJS 的方法在@LiviuT 的回答中!但是,如果您想在另一个范围内取消注册侦听器,同时又想远离创建局部变量以保留取消注册函数的引用。这是一个可能的解决方案。