title: backbone collection events not firing. Am I missing something?
body: <p>I'm trying to make a preloader and getting caught at step one with backbone. I've built a nice one before using jquery and also with 'raw' js basically what happens is that I have a folder called img/ui and a server side script that just gives a JSON dump of that folder. This request is /preload the js then queues this and loads them one by one based upon a process of load events with timeouts &amp; error handlers.
  What I'm trying to is port this to Backbone. The pattern I thought was a collection which loads the JSON build a set of models for each of the assets then a single view attached to the collection to display the status of the queue...... simple.</p>
  
  <p>But I'm already stuck.. first I have to manually fetch the JSON or it wont do anything.. fine.. done, second even when the JSON is loaded it wont fire the parse method (or any other):</p>
  
  <pre><code>var PreloaderCollection = Backbone.Collection.extend({
      model:PreloaderModel,
      url:"/preload",
      events: {
          "change":"parse"
      },
      initialize: function()
      {
          _.bindAll(this);
          this.fetch(this.url);
      },
      setup: function(args)
      {
  
      },
      update: function(args)
      {
  
      },
      parse:function(args){
          log(args)
      },
      remove: function(args)
      {
  
      }
  });
  </code></pre>
  
  <p>I'm really starting to get frustrated with Backbone, It's my first major project and despite reading about every tutorial and fully going through the source there seems to be so much contradiction about the pattern and capabilities. </p>
  
  <p><strong>EDIT:</strong></p>
  
  <p>This was a last resort and feels very dirty but here's how I 'bypassed' the issue.
  I essentially overrode the fetch function with my own like so, which now works but... hmm,</p>
  
  <pre><code>var PreloaderCollection = Backbone.Collection.extend({
      url:"/preload",
      events: {
          "reset":"parse"
      },
      initialize: function()
      {
          log("initing preloader collection")
          _.bindAll(this);
          this.bind("change",this.parse)
          this.fetch(this.url);
      },
      fetch:function(args){
          $.getJSON(
              args,
              this.parse
          )
      },
      setup: function(args)
      {
  
      },
      update: function(args)
      {
  
      },
      parse:function(args){
          log("parse",args)
      },
      remove: function(args)
      {
  
      }
  });
  </code></pre>