Skip to content

Instantly share code, notes, and snippets.

@DistractionBoy
Last active September 6, 2017 20:20
Show Gist options
  • Save DistractionBoy/fbeca9e3576162041e3a09d730d9fbfe to your computer and use it in GitHub Desktop.
Save DistractionBoy/fbeca9e3576162041e3a09d730d9fbfe to your computer and use it in GitHub Desktop.
angular ObserverService
(function () {
angular
.module('myApp')
.service('ObserverService', ObserverService);
function ObserverService () {
var vm = this;
vm.data = {};
vm.callbacks = {};
vm.set = function (key, value) {
vm.data[key] = value;
vm.notify(key);
};
vm.get = function (key) {
return vm.data[key];
};
vm.notify = function (key) {
if (vm.callbacks[key] !== undefined) {
for (var i = 0; i < vm.callbacks[key].length; i++) {
var data = vm.data[key];
vm.callbacks[key][i](data);
}
}
};
vm.listen = function (key, func) {
if (vm.callbacks[key] === undefined) {
vm.callbacks[key] = [];
}
vm.callbacks[key].push(func);
};
vm.clearAll = function () {
var keys = Object.keys(vm.data);
keys.map(function(key){
vm.data[key] = null;
vm.notify(key);
});
return true;
}
}
}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment