title: MarionetteJS: Issue concerning change of model attributes (events not firing?)
body: <p>The application depicted here is not the real application but solely meant to demonstrate the question and created in the spirit of the contactmanager application as depicted in the book from David Sulc.  </p>
  
  <p><a href="http://i42.tinypic.com/2u4r70m.png" rel="nofollow">Image showing application layout</a>  </p>
  
  <p><strong>The application from the image above can do the following things:</strong><br>
  - On startup, only region 1 is shown<br>
  - User can upload a picture which also creates the first contact in the collection.<br>
  - Once upload is finished, region 2 and 3 become active.<br>
  - Region 2 allows the user to crop the image and change the contact attributes (name/age etc.)<br>
  - Region 3 shows a collectionView of all created contacts and shows a button to create a new contact.<br>
  - Region 3 at every entry there is an <em>edit</em> which should load the contact in the views above.<br>
  - When a second (or later) contact is to be added, region 2 disables until a new image has been uploaded.</p>
  
  <p><strong>Technical approach</strong><br>
  - Have a contact model and contacts model.<br>
  - Since I don't change the views in the regions I don't plan on using routers.<br>
  - Have a way to keep track of which model is currently active.  </p>
  
  <p><strong>The code</strong>    </p>
  
  <pre><code>// File: js/app.js  
  
  // Define application  
  var ContactManager = new Marionette.Application();
  
  // Define regions
  ContactManager.addRegions({
    firstRegion: "#first-region",
    secondRegion: "#second-region",  
    tirdRegion: "#third-region"
  });
  
  // Itemviews (usually in modules, but for short it's here)
  var region1View = Marionette.ItemView.extend({
      template: "#a-template",
      model: ContactManager.request("contacts:active");
  });  
  ContactManager.firstRegion.show(region1View);
  </code></pre>
  
  <p>. </p>
  
  <pre><code>//File: js/apps/entities/canvas.js  
  ContactManager.module('Entities', function (Entities, ContactManager, Backbone, Marionette, $, _) {
      Entities.Contact = Backbone.Model.extend({
          defaults: {
              fileName: '',
              name: ''
          },
          change: function() {
              console.log('bla');
          }
      });
  
      Entities.contactCollection = Backbone.Collection.extend({
          model: Entities.Contact
      });
  
      var contacts;
      var activeCanvasCID;
      var initializeCanvas = function () {
          contacts = new Entities.CanvasCollection([
              {
                  name: "John Doe"
              }
          ]);
      };
  
      var API = {
          getContactEntities: function () {
              return contacts;
          },
          getActiveContactsEntity: function () {
              if (!contacts) {
                  // if we don't have any contacgts yet, create the first
                  initializeContact();
              }
              if (activeContactCID === undefined) {
                  // No active contact yet, get the first model from collection
                  activeContactCID = contacts.at(0).cid;
              }
              return contact.get(activeCanvasCID);
          },
          setActiveContactsEntity: function (cid) {
              if (activeContactCID !== cid) {
                  activeContactCID = cid;
                  ContactManager.vent.trigger("ActiveCanvasChanged");
              }
          }
      };
  
      ContactManager.reqres.setHandler("contacts:entities", function () {
          return API.getContactEntities();
      });
  
      ContactManager.reqres.setHandler("contacts:active", function () {
          return API.getActiveContactsEntity();
      });
  
      ContactManager.commands.setHandler("contacts:setActiveEntity", function(cid){
          API.setActiveContactsEntity(cid);
      });
  });
  </code></pre>
  
  <p><em>Disclaimer: There might be some syntax errors, but this is semi-pseudo code</em>  </p>
  
  <p>Now, for instance, if I do in any other module the following (e.g. when image has been uploaded and I want to set the filename in the currently active model):  </p>
  
  <pre><code> var activeModel = ContactManager.request("contacts:active");
   activeModel.set("fileName","image.png");
  </code></pre>
  
  <p><strong>Issue</strong><br>
  Now, when I do the latter, the change (console.log) event is not firing. Also, the itemViews which also reference this activeModel do not update. Any idea why this is the case?  </p>
  
  <p><strong>Design question</strong><br>
  Is this the correct way of designing an app which doesn't need (or is that a wrong assumption as well) routers; or should I be taking another approach?</p>