Skip to content

Instantly share code, notes, and snippets.

@FranckErnewein
Created September 10, 2014 12:42
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 FranckErnewein/28dc400f436b96070caa to your computer and use it in GitHub Desktop.
Save FranckErnewein/28dc400f436b96070caa to your computer and use it in GitHub Desktop.
var backbone = require('Backbone');
var $ = require('jquery');
// Views Classes
var ListNewsView = require('///');
var NewsView = require('///');
var Home = require('///');
// define router
var MyRouter = Backbone.Router.extend({
routes: {
'': 'displayHome',
'/news': 'displayLastNews',
'/news/:id', 'displayNews'
},
initialize: function(){
this.views = {};
// create views
this.createView('newslist', new ListNewsView({/*...*/}));
this.createView('news', new NewsView({/*...*/}));
this.createView('home', new Home({/*...*/}));
},
// Create and register a view on the router
createView: function(name, view){
this.views[name] = view;
},
displayView: function(name){
// hide all view ...
_.each(this.views, function(view){
view.$el.hide();
});
// ... then display the good one
this.views[name].$el.show();
},
displayHome: function(){
this.displayView('home'); //display the HomeView
},
displayLastNews: function(){
this.displayView('newslist');
this.views.newslist.collection.fetch(); //load all news
},
displayNews: function(news_id){
var news_model = this.views.newslist.collection.get(news_id); //pick news from news list
this.views.news.setModel(news_model); //assuming `NewsView.setModel` implemented
this.displayView('news');
}
});
$(document).readt(function(){
var app = new MyRouter();
app.history.start();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment