この記事は?
以下のコードのように,スコープにイベントリスナを登録した場合,そのイベントリスナを削除する方法について解説する記事です.
$scope.$on('eventName', function($e) {
// nanika
});
解決法
$scope.$on
の返り値は,そのリスナを削除する関数になってますので,
返り値をそのまま呼び出してあげましょう.
$scope.$$listeners
をそのままいじったりせず,こちらを使いましょう.
var offEvent = $scope.$on('eventName', function($e) {
// nanika
});
// 上で登録したイベントリスナを削除する
offEvent();
該当部分のソースコードはこちら.
https://github.com/angular/angular.js/blob/master/src/ng/rootScope.js#L1170