Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 8th, 2012  |  syntax: JavaScript  |  size: 1.63 KB  |  hits: 9  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. var SelectedPartView = Backbone.View.extend({
  2.         tagName: "div",
  3.         className: "selectedPart",
  4.         template: _.template($("#selectedPart-template").html()),
  5.        
  6.         initialize: function() {
  7.                 this.model.on("change", this.render, this);
  8.                 this.model.on("removeSelectedPartView", this.destroy, this);
  9.         },
  10.        
  11.         render: function() {
  12.                 if (debug) console.log("rendering selectedpartview for",this.model.get("name"));
  13.                 this.$el.html(this.template({part: this.model.toJSON()})).fadeIn(fadeDuration);
  14.                 return this;
  15.         },
  16.        
  17.         destroy: function() {
  18.                 if (debug) console.log("destroying selectedpartview for",this.model.get("name"));
  19.                 var self = this;
  20.                 self.model.off("change", this.render, this);
  21.                 self.model.off("removeSelectedPartView", this.destroy, this);
  22.                 self.remove();
  23.         }
  24. });
  25. var SelectedPartListView = Backbone.View.extend({
  26.         el: $(".selectedPartList"),
  27.        
  28.         initialize: function() {
  29.                 this.$el.empty();
  30.                 this.collection.on("add", this.addSubView, this);
  31.                 this.collection.on("remove", this.removeSubView, this);
  32.                 this.collection.on("reset", this.reset, this);
  33.         },
  34.        
  35.         render: function() {
  36.                 if (debug) console.log("rendering selectedpartlistview for",this.collection.models);
  37.                 var self = this;
  38.                 self.collection.each(function(model) {
  39.                         self.addSubView(model);
  40.                 });            
  41.                 return self;
  42.         },
  43.        
  44.         reset: function() {
  45.                 this.$el.empty();
  46.                 this.render();
  47.         },
  48.        
  49.         addSubView: function(model) {
  50.                 if (model.get("name").toUpperCase() !== "NONE") {
  51.                         var sv = new SelectedPartView({model: model});
  52.                         this.$el.append(sv.render().el);
  53.                 }
  54.         },
  55.        
  56.         removeSubView: function(model) {
  57.                 model.trigger("removeSelectedPartView");
  58.          }
  59. });