All pastes #2124129 Raw Edit

Stuff

public text v1 · immutable
#2124129 ·published 2012-03-04 22:34 UTC
rendered paste body
  PGTable.Views.Table = Backbone.View.extend({
      template: "app/templates/pgtable.html",

      initialize: function(options) {
        _.bindAll(this, 'render', 'remove');
        this.model.bind('change', this.render);
        this.model.bind('destroy', this.remove);
      },

      render: function(done) {
        var view = this;          
        namespace.fetchTemplate(this.template, function(tmpl) {
            view.el.innerHTML = tmpl();
            $('ul', this.parentEl).append(view.el); // THIS is what I want to avoid...
        });
      },

      remove: function() {
          $(this.el).remove();
      }
    
  });
    
  // This will fetch the tutorial template and render it.
  PGTable.Views.Tables = Backbone.View.extend({
    template: "app/templates/pgtables.html",

    initialize: function(options) {
      _.bindAll(this, 'render', 'addAll', 'addOne');
      this.collection.bind('add', this.addOne);
    },
      
    render: function(done) {
      var view = this;
  
      // Fetch the template, render it to the View element and call done.
      namespace.fetchTemplate(this.template, function(tmpl) {
        $(view.el).html(tmpl());

        // If a done function is passed, call it with the element
        if (_.isFunction(done)) {
          done(view.el);
        }
        view.addAll();
      });
    },

    addAll: function() {
      this.collection.each(this.addOne);
    },

    addOne: function(model) {
       view = new PGTable.Views.Table({model: model});
       view.parentEl = this.el;
       view.render();
       model.bind('remove', view.remove);
    }
      
  });