Skip to content
Create a gist now

Instantly share code, notes, and snippets.

Embed URL


Subversion checkout URL

You can clone with
Download ZIP
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});
MyRouter = Backbone.Router.extend({
routes: {
"": "home",
"post/:id": "showPost"
home: function(){
var homeView = new HomeView();
showPost: function(id){
var post = posts.get(id);
var postView = new PostView({model: post});

At your last example, wouldn' it be better to have an event object for models and/or collections like the one for the DOM events. Then you have a start and stop method where you can simple bind/unbind this events automatically. Its inspired by the architecture of GWT where every activity has a start and an optional stop method.


at the time I wrote this, that idea hadn't crossed my mind... but I'm doing basically that, now. it works really well. I'm using a combination of both techniques, depending on the situation.


Btw, is it really necessary to delete the DOM events. Aren't they gone when the element is deleted?


i don't know if remove the elements from the DOM would clean them up directly or not. i know calling this.remove() will force jquery to clean them up and i can only imagine that jquery implemented the DOM event cleanup for a reason... but i don't know for sure


You're missing the word function in 5-appview.js (this.showView(view) {)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.