60 lines
1.3 KiB
Markdown
60 lines
1.3 KiB
Markdown
|
# Relay
|
||
|
|
||
|
> A dead-simple pub/sub utility for KnockoutJS
|
||
|
|
||
|
I always have a `Relay` utility to communicate between web-components or services, for knockout it is just a simple wrapper around `knockout.subscribable()` functionality.
|
||
|
|
||
|
## Getting Started
|
||
|
|
||
|
First include `relay` in your knockoutjs config file located at `app/require.config.js` like so
|
||
|
|
||
|
```
|
||
|
...
|
||
|
paths: {
|
||
|
...
|
||
|
"relay": "vendor/relay/relay"
|
||
|
},
|
||
|
```
|
||
|
|
||
|
Next, include it in your web-components `define` section
|
||
|
|
||
|
```js
|
||
|
define(['knockout', 'relay', 'text!./nav-bar.html'], function (ko, relay, template) {
|
||
|
|
||
|
return {
|
||
|
viewModel: function viewModel(params) {
|
||
|
var self = this;
|
||
|
|
||
|
// add relay.inbound / relay.outbound here
|
||
|
},
|
||
|
template: template
|
||
|
};
|
||
|
|
||
|
});
|
||
|
```
|
||
|
|
||
|
Now your ready to start using the utility
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
The API is dead simple, just 2 methods: `inbound` and `outbound`
|
||
|
|
||
|
To send a message
|
||
|
|
||
|
```js
|
||
|
relay.outbound(message, channel);
|
||
|
```
|
||
|
|
||
|
Where `message` be any data, string, object, ect... and `channel` is how to pick it up on the other side
|
||
|
|
||
|
```
|
||
|
relay.inbound(channel, function(data) {
|
||
|
// do something with the data
|
||
|
});
|
||
|
```
|
||
|
|
||
|
Thats it!
|
||
|
|
||
|
### Reference
|
||
|
|
||
|
- [Stackoverflow Example](https://stackoverflow.com/questions/26251773/knockout-components-communication)
|