rodrickmakore
3/13/2013 - 8:50 PM

1-referencing.js

AddEditView = Backbone.View.extend({
  initialize: function(options){
    _.bindAll(this, "editMedication");
    options.vent.bind("editMedication", this.editMedication);
  },

  editMedication: function(medication){
    this.model = medication;
    this.render();
  }
});

MedicationView = Backbone.View.extend({
  events: {
    "click #edit": "editMedication"
  },

  initialize: function(options){
    this.vent = options.vent;
  },

  editMedication: function(){
    this.vent.trigger("editMedication", this.model);
  }
});

// initialize everything, and tie it all together
// with the event aggregator object: vent

var vent = _.extend({}, Backbone.Events);

var addEditView = new AddEditView({vent: vent});

medicationList.each(function(med){
  new MedicationView({model: med, vent: vent});
});
var vent = _.extend({}, Backbone.Events);
MedicationRouter = Backbone.Router.extend({
  routes: {
    "edit/:id": "editMedication"
  },

  editMedication: function(id){
    var med = medicationList.get(id);
    this.addEditView.editMedication(med);
  }
});

AddEditView = Backbone.View.extend({

  editMedication: function(medication){
    this.model = medication;
    this.render();
  }

});
MedicationView = Backbone.View.extend({
  events: {
    "click #edit": "editMedication"
  },

  initialize: function(options){
    this.addEditView = options.addEditView;
  }

  editMedication: function(){
    this.addEditView.render();
  }
});

// initialize everything here... 
// 'medicationList' is a collection of medications
var addEditView = new AddEditView(...);

medicationlist.each(function(med){
  new MedicationView({model: med, addEditView: addEditView});
}
MedicationView = Backbone.View.extend({
  events: {
    "click #edit": "editMedication"
  },

  editMedication: function(){
    var editView = new AddEditView({model: this.model});
    editView.render();
  }
});