Skip to content

Instantly share code, notes, and snippets.

@mlzxy
Created August 2, 2015 08:29
Show Gist options
  • Save mlzxy/59f852af8ee768b0183c to your computer and use it in GitHub Desktop.
Save mlzxy/59f852af8ee768b0183c to your computer and use it in GitHub Desktop.
My favorite event mechanism in a angular app
var scopeEventService = function() {
var _event = {}; //visted info
var _handler = {
EventName1: {
codeBlockName:function(){} //handler
}
};
var event = function($scope, evtName, codeBlockName) {
var e = _event[evtName];
if (e && !e.reciever[codeBlockName]) {
e.reciever[codeBlockName] = true;
(_handler[evtName][codeBlockName] || noop)($scope, e.argument);
}
};
var $event = function($scope, evtName, codeBlockName) {
$scope.$on(evtName, function(evt, option) {
(_handler[evtName][codeBlockName] || noop)($scope, option);
});
};
this.add = function(evtname, codeBlockName, fun) {
_handler[evtname] = _handler[evtname] || {};
_handler[evtname][codeBlockName] = fun;
return this;
};
this.$get = function() {
return {
event: event,
$event: $event
};
};
function onViewEnter($scope, fun) {
$scope.$on('$ionicView.enter', fun);
}
return {
event: event,
$event: $event,
onViewEnter: onViewEnter
};
};
app.factory('scopeEventService', scopeEventService);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment