Add bind function to listener.js
This commit is contained in:
parent
658608a405
commit
945736b9a9
2 changed files with 28 additions and 1 deletions
19
listener.js
19
listener.js
|
@ -8,7 +8,7 @@ Example:
|
||||||
l.contract = new Contract()
|
l.contract = new Contract()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export default (target={}) => {
|
export const listener = (target={}) => {
|
||||||
let callbacks = new Map()
|
let callbacks = new Map()
|
||||||
function listen(prop, callback) {
|
function listen(prop, callback) {
|
||||||
if ("object" == typeof prop && "forEach" in prop) {
|
if ("object" == typeof prop && "forEach" in prop) {
|
||||||
|
@ -38,3 +38,20 @@ export default (target={}) => {
|
||||||
})
|
})
|
||||||
return proxy
|
return proxy
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const bind = (listener, prop, target=document.createTextNode(""), filter) => {
|
||||||
|
const run = data => {
|
||||||
|
data = filter
|
||||||
|
? filter(data)
|
||||||
|
: data
|
||||||
|
if ("innerText" in target)
|
||||||
|
target.innerText = data
|
||||||
|
else
|
||||||
|
target.data = data
|
||||||
|
}
|
||||||
|
listener.listen(prop, run)
|
||||||
|
run(listener[prop])
|
||||||
|
return target
|
||||||
|
}
|
||||||
|
|
||||||
|
export default listener
|
||||||
|
|
10
listener.md
10
listener.md
|
@ -15,6 +15,16 @@ listener.listen(prop)
|
||||||
// Removes all callbacks from a given property
|
// Removes all callbacks from a given property
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```js
|
||||||
|
bind(listener, "value")
|
||||||
|
// Returns a text node with listener.value as its content
|
||||||
|
// that will change whenever the value is changed
|
||||||
|
bind(listener, "value", html_element)
|
||||||
|
// Binds an existng HTML or Text node
|
||||||
|
bind(listener, "value", html_element, value => value.toUpperCase())
|
||||||
|
// Filters the value through a function before setting it
|
||||||
|
```
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
||||||
```js
|
```js
|
||||||
|
|
Loading…
Reference in a new issue