Skip to content

Instantly share code, notes, and snippets.

@mariusk
Created January 15, 2015 12:41
Show Gist options
  • Save mariusk/60c08300dfe3be55b451 to your computer and use it in GitHub Desktop.
Save mariusk/60c08300dfe3be55b451 to your computer and use it in GitHub Desktop.
# watchify -v -t coffeeify -o www/bundle.js -e client/client.coffee
# browserify -t coffeeify -o www/bundle.js -e client/client.coffee
C = require 'cyclejs'
Rx = C.Rx
h = C.h
root = window ? exports
Page1Model = C.createModel (intent) ->
route$: intent.get('changeRoute$').startWith('/page1')
Page1View = C.createView (model) ->
vtree$: model.get('route$').map (data) ->
h 'div', null, [
(h 'button', {onclick: 'changeRoute$'}, '/page2')
(h 'div', null, ("#{new Date()}"))]
Page1Intent = C.createIntent (view) ->
changeRoute$: view.get('changeRoute$').map (ev) ->
console.log "Page1Intent", ev.target.textContent
ev.target.textContent
RouteModel = C.createModel (intent) ->
route$: intent.get('changeRoute$').startWith('/page1')
RouteView = C.createView (model) ->
vtreepage1$ = Page1View.get('vtree$')
vtree$: Rx.Observable.combineLatest(model.get('route$'), vtreepage1$, (route, vtree) ->
console.log "route #{route}"
switch route
when '/page1' then vtree)
RouteIntent = C.createIntent (view) ->
changeRoute$: view.get('changeRoute$').map (route) ->
console.log "RouteIntent", route
route1
# Option 1 (below) works as expected, but has no routing of course. But
# at least the intent gets activated when I push the button.
#
#C.createRenderer('#container').inject(Page1View)
#Page1Intent.inject(Page1View).inject(Page1Model).inject(Page1Intent)
# Option 2 (below) displays ok (correct html), but no intents get activated
# anywhere (neither Page1Intent or RouteIntent).
C.createRenderer('#container').inject(RouteView)
Page1Intent.inject(Page1View).inject(Page1Model).inject(Page1Intent)
RouteIntent.inject(RouteView).inject(RouteModel).inject(RouteIntent)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment