angular-communicator

1.0.0 • Public • Published

angular-communicator

An Angular module that gives you a way to share messages among modules.

NPM version License Downloads

Just as you would do with $on, $emit and $broadcast using AngularJS, you can easily register your listeners and execute them with this simple service. Angular Communicator brings you an awesome feature that allows you define your listeners as a tree and execute them as you wish, nice and easy.

Table of contents:

Get Sarted

(1) You can install angular-communicator using 3 different ways:
Git: clone & build this repository
Bower:

$ bower install angular-communicator --save

npm:

$ npm install angular-communicator

(2) Include angular-communicator.js (or angular-communicator.min.js) from the dist directory in your index.html, after including Angular itself.

(3) Add 'AngularCommunicator' to your main module's list of dependencies.

When you're done, your setup should look similar to the following:

<!doctype html>
<html ng-app="myApp">
<head>
 
</head>
<body>
    ...
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script> 
    <script src="bower_components/js/angular-communicator.min.js"></script> 
    ...
    <script>
        var myApp = angular.module('myApp', ['AngularCommunicator']);
 
    </script> 
    ...
</body>
</html>

API Documentation

on

Register a listener with its callback function.

myApp.controller('MainCtrl', function($scope, angularCommunicatorService) {
  //...
  angularCommunicatorService.on('foo', function(obj) {
     //...
  });
  //...
});

You can build a tree of listeners adding ':' to specify the hierarchy.

myApp.controller('MainCtrl', function($scope, angularCommunicatorService) {
  //...
  angularCommunicatorService.on('foo', function(obj) {
     //...
  });
  //...
  angularCommunicatorService.on('foo:update', function(obj) {
     //...
  });
  //...
  angularCommunicatorService.on('bar:bee:save', function(obj) {
     //...
  });
});

On returns a clear function to control when the listener needs to be removed.

myApp.controller('MainCtrl', function($scope, angularCommunicatorService) {
  //...
  var cleanUp = angularCommunicatorService.on('update', function(obj) {
     //...
  });
  //...
  cleanUp();
  //...
});

exec

Execute all registered listeners.

myApp.controller('MainCtrl', function($scope, angularCommunicatorService) {
  //...
  angularCommunicatorService.exec('foo', {update: true});
  //...
});

You can execute the listeners of a level just telling the parent level name.

myApp.controller('MainCtrl', function($scope, angularCommunicatorService) {
  //...
  angularCommunicatorService.on('foo:bar', Bar());
  angularCommunicatorService.on('foo:bee', Boo());
  angularCommunicatorService.on('foo:bar:update', Update());
  angularCommunicatorService.on('foo:bar:save', Save());
  //...
  angularCommunicatorService.exec('foo:bar', {update: true});
  //...
});
Execute multiple listeners at once.
myApp.controller('MainCtrl', function($scope, angularCommunicatorService) {
  //...
  angularCommunicatorService.exec(['update', 'save', 'bar:save'], {update: true});
  //...
});

Pass an argument to each listener with an array of arguments.

myApp.controller('MainCtrl', function($scope, angularCommunicatorService) {
  angularCommunicatorService.on('update', function(obj) {
     //obj -> {update: true}
  });
  angularCommunicatorService.on('save', function(obj) {
     //obj -> {save: false}
  });
  angularCommunicatorService.on('bar:save', function(obj) {
     //obj -> {name: 'bar.save'}
  });
  //...
  angularCommunicatorService.exec(['update', 'save', 'bar:save'], [{update: true}, {save: false}, {name: 'bar.save'}]);
  //...
});

By default the first argument is passed to the listener whether it doesn't have an correspondent argument.

myApp.controller('MainCtrl', function($scope, angularCommunicatorService) {
  angularCommunicatorService.on('update', function(obj) {
     //obj -> {update: true}
  });
  angularCommunicatorService.on('save', function(obj) {
     //obj -> {save: false}
  });
  angularCommunicatorService.on('bar:save', function(obj) {
     //obj -> {update: true}
  });
  //...
  angularCommunicatorService.exec(['update', 'save', 'bar:save'], [{update: true}, {save: false}]);
  //...
});

remove

Remove an listener from communicator.

myApp.controller('MainCtrl', function($scope, angularCommunicatorService) {
  //...
  angularCommunicatorService.remove('update');
  //...
});

clear

Remove all listeners from communicator.

myApp.controller('MainCtrl', function($scope, angularCommunicatorService) {
  //...
  angularCommunicatorService.clear();
  //...
});

Package Sidebar

Install

npm i angular-communicator

Weekly Downloads

2

Version

1.0.0

License

MIT

Last publish

Collaborators

  • alanschlindvein