2
如何在角度控制器中捕捉事件?在角度控制器中收聽文檔事件
我有文檔級別的事件,所以我需要捕捉角度控制器中的事件,這可能嗎?
更新
我有獨立的js與相機的一些動作的處理文件。
document.addEventListener('myCameraEvent', handleMyCameraEvent);
我想在角控制器或指令中觸發此事件。任何人都可以解釋,怎麼可能實現角?
如何在角度控制器中捕捉事件?在角度控制器中收聽文檔事件
我有文檔級別的事件,所以我需要捕捉角度控制器中的事件,這可能嗎?
更新
我有獨立的js與相機的一些動作的處理文件。
document.addEventListener('myCameraEvent', handleMyCameraEvent);
我想在角控制器或指令中觸發此事件。任何人都可以解釋,怎麼可能實現角?
這裏有一個通用的自定義事件的觀察者服務:
.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);
});
});
在你的控制,你會使用這樣的:
.controller('MyCtrl', function($scope, Camera) {
subscriber = Camera.subscribe('myCustomEvent', customEventHandler);
function customEventHandler(event) {
//process event
//..
//if handler is not needed anymore, unsubscribe
//subscriber.unsubscribe();
}
})
當然,這只是一般的想法。您可能想要在Camera服務上使用特定的方法,例如Camera.onSnapshot(snapshothandler); Camera.onTurnOff(turnOffHandler);
,它可以將處理程序註冊到特定事件以抽象出事件名稱。
偉大的答案,我會嘗試 – havenchyk
這通常是通過指令完成的。你想要對這些事件做什麼? – package
您需要在html級別設置控制器函數,例如ng-click = fn(),或者通過指令作爲Package提到 – V31
@包,我已經存在名爲myCustomEvent的事件,在文檔中註冊。我想觸發這個事件的時間,並從這個事件得到一些價值 – havenchyk