Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Usage
- * -----
- *
- * **Basic usage**
- * observer = Object.create(ObserverService);
- * observer.register('eventName', callback);
- * observer.notify('eventName', paramsToPass);
- */
- angular.module('lukicdarkoo.observer', []).factory('ObserverService', function() {
- var obj = {};
- obj.register = register;
- obj.notify = notify;
- ////////////////////
- var observers = [];
- function register(_type, _callback, _useLoaded, _id) {
- // Collect garbage (unused observers)
- if (angular.isDefined(_id)) {
- for (var i = 0; i < observers.length; i++) {
- if (observers[i].id === _id) {
- observers.splice(i, 1);
- }
- }
- }
- // Push observers
- observers.push({
- callback : _callback,
- type : _type,
- params : [],
- id : _id
- });
- // If there is already loaded data it will fire notify immediately
- if (_useLoaded) {
- loadedUsed = false;
- angular.forEach(observers, function(observer) {
- if (observer.type === _type && loadedUsed === false) {
- _callback(observer.params);
- loadedUsed = true;
- }
- });
- }
- }
- function notify(_type, _params) {
- angular.forEach(observers, function(observer) {
- if (observer.type === _type) {
- observer.params = _params;
- observer.callback(observer.params);
- }
- });
- }
- return obj;
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement