Skip to content

Instantly share code, notes, and snippets.

@leoromanovsky
Last active December 28, 2015 02:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leoromanovsky/7426081 to your computer and use it in GitHub Desktop.
Save leoromanovsky/7426081 to your computer and use it in GitHub Desktop.
How I manage complex single page dynamic web apps.
#content
= spinner_tag()
:javascript
jQuery.ready(function() {
var pageView = new PageView();
pageView.render()
});
class PageView
initialize: ->
@router = new Router()
@homeView = new HomeView()
# Register listeners that the view class triggers.
@homeView().on('clickProfile', => @router().navigate('profile', {trigger: true}))
@homeView().on('clickFeed', => @router().navigate('feed', {trigger: true}))
@setUpRouting()
setUpRouting: ->
@router().bind('route:home', => @renderHome())
@router().bind('route:profile', => @renderProfile())
@router().bind('route:feed', => @renderFeed())
@router().start()
class Router extends Backbone.Router
routes: {
'': 'home',
'profile': 'profile'
'feed' : 'feed'
}
home: ->
@trigger('route:home')
profile: ->
@trigger('route:profile')
feed: ->
@trigger('route:feed')
class HomeView extends Backbone.View
template: 'home'
el: '#content'
events: {
'click #profile' : 'clickProfile'
'click #feed' : 'clickFeed'
}
render: ->
@renderTemplate({})
@
clickProfile: ->
@trigger('clickProfile')
clickFeed: ->
@trigger('clickFeed')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment