Skip to content

Instantly share code, notes, and snippets.

@risent
Forked from mxriverlynn/1-view-events.js
Created September 9, 2012 15:43
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 risent/3685149 to your computer and use it in GitHub Desktop.
Save risent/3685149 to your computer and use it in GitHub Desktop.
zombies! run!
MyView = Backbone.View.extend({
events: {
"click #someButton": "doThat",
"change #someInput": "changeIt"
},
doThat: function(){ ... },
changeIt: function(){ ... }
});
MyView = Backbone.View.extend({
initialize: function(){
this.model.bind("change", this.render, this);
},
render: function(){ ... }
});
MyView = Backbone.View.extend({
initialize: function(){
this.options.vent.bind("app:event", this.render, this);
},
render: function() { ... }
});
var vent = new _.extend({}, Backbone.Events);
new MyView({vent: vent});
vent.trigger("app:event");
MyRouter = Backbone.Router.extend({
routes: {
"": "home",
"post/:id": "showPost"
},
home: function(){
var homeView = new HomeView();
$("#mainContent").html(homeView.render().el);
},
showPost: function(id){
var post = posts.get(id);
var postView = new PostView({model: post});
$("#mainContent").html(postView.render().el);
}
});
function AppView(){
this.showView(view) {
if (this.currentView){
this.currentView.close();
}
this.currentView = view;
this.currentView.render();
$("#mainContent").html(this.currentView.el);
}
}
MyRouter = Backbone.Router.extend({
routes: {
"": "home",
"post/:id": "showPost"
},
initialize: function(options){
this.appView = options.appView;
},
home: function(){
var homeView = new HomeView();
this.appView.showView(homeView);
},
showPost: function(id){
var post = posts.get(id);
var postView = new PostView({model: post});
this.appView.showView(postView);
}
});
Backbone.View.prototype.close = function(){
this.remove();
this.unbind();
}
Backbone.View.prototype.close = function(){
this.remove();
this.unbind();
if (this.onClose){
this.onClose();
}
}
MyView = Backbone.View.extend({
initialize: function(){
this.model.bind("change", this.render, this);
},
render: function(){ ... },
onClose: function(){
this.model.unbind("change", this.render);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment