"UI programming is groovy with event streams and behaviors." - me
Rather than ... | why not ... |
bind a callback to an event and mutating state | map a function over an event stream |
keeping UI details in mutable state | express your UI's behavior as a function of time and event streams |
Bind jQuery event streams and behaviors.
Behave.jqueryInputB() .map(function(val) { return val.toUpperCase(); }) .changes() .subscribe(Behave.inputSink());
Bind backbone event streams and behaviors.
var model = new Backbone.Model({foo: "baz"}); Behave.backboneModelB(model) .map(function(currModel) { return currModel.get("foo") }) .subscribe(Behave.inputSink()); model.set({"foo" : });
Polling-based animations use the same API and push-based events.
Behave.time
.map(function(dt) { return 36*Math.abs(Math.sin(dt.getTime() / 1000.0)); })
.changes({pollMillis: 50})
.subscribe(function(v) { grow.attr("style", "font-size: " + v + "pt"); });
Now head over to the repo on github or read the the annotated source code and then read more about Functional Reactive Programming: