シングルトンなサービスとかで使うとハマりがちなやつ
var hogeCanceller;
service.bindHoge = function(cb){
// hoge処理が登録済みの場合はキャンセルする
if( hogeCanceller ) hogeCanceller();
// $onで登録した処理をキャンセルする処理を取得
hogeCanceller = $rootScope.$on(
'hoge',
function(){
//...
cb();
}
);
};
ちなみに以下のようにして、登録済み処理のキャンセル処理を取得することはできない
hogeCanceller = $rootScope.$on('hoge');