Écouter l'événement du document dans le contrôleur angulaire

Comment attraper l'événement dans le contrôleur angulaire?

J'ai des événements de niveau de document, donc j'ai besoin d'attraper l'événement dans un contrôleur angulaire, est-ce possible?

Mettre à jour

J'ai un fichier js autonome avec la gestion de certaines actions de la caméra.

document.addEventListener('myCameraEvent', handleMyCameraEvent); 

Et je veux déclencher cet événement dans un contrôleur ou une directive angulaire. Quelqu'un pourrait-il expliquer, comment est-il possible de mettre en œuvre avec angulaire?

Voici un service générique d'observation d'événements personnalisés:

 .service('Camera', function($document) { //map of current subscribers var subscribers = {}; //notifies all subscribers of particular event type function notify(event) { var handlers = subscribers[event.type] || []; for (var i = 0; i < handlers.length; i++) { handlers(i)(event); } } //adds new handler to subscribers list //returns object with unsubscribe() method this.subscribe(eventType, handler) { var handlers = subscribers[eventType] || []; handlers.push(handler); return (function(type, index) { return { unsubscribe: function() { subscribers[type].splice(index); } } })(eventType, handlers.length - 1); } //register custom events $document.on('myCameraEvent', function(event) { notify(event); }); $document.on('myOtherCameraEvent', function(event) { notify(event); }); }); 

Dans votre contrôleur, vous l'utiliserez comme ceci:

 .controller('MyCtrl', function($scope, Camera) { subscriber = Camera.subscribe('myCustomEvent', customEventHandler); function customEventHandler(event) { //process event //.. //if handler is not needed anymore, unsubscribe //subscriber.unsubscribe(); } }) 

Bien sûr, ce n'est qu'une idée générale. Vous voudrez peut-être avoir des méthodes spécifiques sur le service Caméra, par exemple Camera.onSnapshot(snapshothandler); Camera.onTurnOff(turnOffHandler); Camera.onSnapshot(snapshothandler); Camera.onTurnOff(turnOffHandler); Qui inscrirait les gestionnaires à des événements spécifiques pour abstraire les noms des événements.