A Polymer event emitter element with support for wildcards, many and once.
A Polymer event emitter element with support for wildcards, many and once.
To install this element using Bower run:
bower install polymer-eventemitter --save
The following are valid attributes supported by the element:
event
notifications for an event with the name [name]
. For example, if you setup on-event-foo
and then somewhere in your application run this.asyncFire('event', {name: "foo", data: "Foo!"});
this will trigger callback
, passing the data specified.many="3"
, we will no longer execute the callback after the third occurrence.An element listening for an event 'foo' will fire a callback 'fooEvent' when we detect it has been broadcast.
<polymer-element name="my-app-a">
<template>
<polymer-eventemitter on-event-foo="{{fooEvent}}"></polymer-eventemitter>
<content></content>
</template>
<script>
Polymer('my-app-a', {
fooEvent: function(e, detail, sender) {
this.innerHTML += '<br>[my-app-a] got a [' + detail + '] event<br>';
}
});
</script>
</polymer-element>
An element with a wildcard listener. Catches all events broadcast, firing 'fooWildcard' every time we detect a notification.
<polymer-element name="my-app-b">
<template>
<polymer-eventemitter on-event-wildcard="{{fooWildcard}}"></polymer-eventemitter>
<content></content>
</template>
<script>
Polymer('my-app-b', {
fooWildcard: function(e, detail, sender) {
this.innerHTML += '<br>[my-app-b] got a [' + detail + '] wildcard event<br>';
}
});
</script>
</polymer-element>
Listen for an event 'baz', N many times. Once 'baz' has been fired N times it will no longer do anything. Note: this differs from EventEmitter2 as its many fires an event N times then removes it.
<polymer-element name="my-app-c">
<template>
<polymer-eventemitter on-event-baz="{{bazMany}}" many="3"></polymer-eventemitter>
<content></content>
</template>
<script>
Polymer('my-app-c', {
bazMany: function(e, detail, sender) {
this.innerHTML += '<br>[my-app-c] got a [' + detail + '] event many<br>';
}
});
</script>
</polymer-element>
Listen for an event 'faz', 1 many times.
<polymer-element name="my-app-d">
<template>
<polymer-eventemitter on-event-faz="{{fazOnce}}" many="1"></polymer-eventemitter>
<content></content>
</template>
<script>
Polymer('my-app-d', {
fazOnce: function(e, detail, sender) {
this.innerHTML += '<br>[my-app-d] got a [' + detail + '] event once<br>';
}
});
</script>
</polymer-element>
Released under a BSD license.