Dans la série des billets sur les petites astuces AngularJS, je vous propose ceci aujourd'hui : pouvoir arrêter d'écouter un évènement.
Le besoin est le suivant :
Vous souhaitez utiliser le patern pub/sub pour gérer un évènement. Le problème est que vous ne souhaitez pas le faire durer dans le temps. Par exemple, que votre callback soit appelé une seule fois et pas plus.
L'astuce est simple. C'est la fonction de création du listener qui retourne la fonction que vous devez appeler pour ne plus écouter cet évènement. Voilà un exemple :
var unregister = $scope.$on('MonEvent', function (event) { unregister(); // le code de votre callback });
Cette astuce marche aussi bien sur $watch que sur $on.
Vous pouvez retrouver un peu plus de détails sur cette fonctionnalité en jetant un oeil sur ce ticket lui aussi avec des exemples de code.