title: Knockout 3.2 amd components not updating observables
body: <p>I am having trouble getting observable arrays to update using knockout 3.2 with components and require. I can manually push items into the array in the view model at declaration no problem, however when they are pushed in via an ajax call OR via a hard coded push on a button click the DOM does not update.</p>
  
  <p>Debugging, I can see the array has the items in, however the DOM is not updating. Any help would be greatly appreciated.</p>
  
  <h2>Default.html</h2>
  
  <pre><code>&lt;!-- ko if: state() === 'home' --&gt;
      &lt;template&gt;&lt;/template&gt;
  &lt;!-- /ko --&gt;
  </code></pre>
  
  <h2>Template.html</h2>
  
  <pre><code>&lt;table id="items"&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Category&lt;/th&gt;
              &lt;th&gt;Item&lt;/th&gt;
              &lt;th&gt;Cost&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody data-bind="foreach: Items()"&gt;
          &lt;tr&gt;
              &lt;td data-bind="text: CategoryName"&gt;&lt;/td&gt;
              &lt;td data-bind="text: Name"&gt;&lt;/td&gt;
              &lt;td data-bind="text: '£' + Cost"&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
  &lt;/table&gt;
  </code></pre>
  
  <h2>Startup.js</h2>
  
  <pre><code>var appStateViewModel = {
      isRunning: ko.observable(false),
      state: ko.observable('home'),
      allowLog: false
  };
  
  // Configure requirejs
  require.config({
      paths: {
          text: 'Scripts/text',
          knockout: '//localhost:2222/Scripts/Plugins/knockout'
      },
      urlArgs: "bust=" + (new Date()).getTime()
  });
  
  // Register knockout components
  ko.components.register('template', { require: './Modules/Template/Template' });
  
  // Apply bindings for state
  var scope = document.getElementById('app');
  ko.applyBindings(appStateViewModel, scope);
  </code></pre>
  
  <h2>Template.js</h2>
  
  <pre><code>define(['knockout', 'text!./Template.html'], function (ko, htmlString) {
      function TemplateViewModel(params) {
  
          var self = this;
          self.Items = ko.observableArray();
  
              $.getJSON("Items")
                  .done(function (response) {
  
                      $.each(response, function (i, item) {
                          self.Items.push({
                              Id: item.Id,
                              Name: item.Name,
                              Description: item.Description,
                              Cost: item.Cost,
                              CategoryName: item.CategoryName
                          });
                      });
                  })
                  .fail(function (listResponse, status, errorThrown) {
                      alert(errorThrown);
                  });
      }
  
      // Return component definition
      return { viewModel: TemplateViewModel, template: htmlString };
  });
  </code></pre>