title: Is there a callback in ember.js which I can use to run code after all views are rendered after state transition?
body: <p>I've got application view consisting of three outlets:</p>
  
  <pre><code>&lt;script type="text/x-handlebars" data-template-name="application"&gt;
          {{outlet header}}
          {{outlet content}}
          {{outlet footer}}
  &lt;/script&gt;
  </code></pre>
  
  <p>which render their own views (simplified):</p>
  
  <pre><code>&lt;script type="text/x-handlebars" data-template-name="header"&gt;
  &lt;a href="#" data-role="button" data-icon="arrow-l" data-iconpos="notext" 
          {{action changeDate view.prevDate href=true}}&gt;Prev&lt;/a&gt;
  {{view.model.weekDay}}
  &lt;a href="#" data-role="button" data-icon="arrow-r" data-iconpos="notext" 
          {{action changeDate view.nextDate href=true}}&gt;Next&lt;/a&gt;
  &lt;/script&gt;
  
  &lt;script type="text/x-handlebars" data-template-name="content"&gt;
  {{view.model.month}}
  &lt;/script&gt;
  
  &lt;script type="text/x-handlebars" data-template-name="footer"&gt;
  {{view.model.day}}
  &lt;/script&gt;
  </code></pre>
  
  <p>and application router which refreshes the views using routing logic</p>
  
  <pre><code>Router: ember.Router.extend({
      root: ember.Route.extend({
          changeDate: ember.State.transitionTo('date'),
          index: ember.Route.extend({
              route: '/',
              connectOutlets: function (router) {
                  router.transitionTo('date', new Date());
              }
          }),
          date: ember.Route.extend({
              route: '/:date',
              serialize: function (router, date) {
                  return { date: toUrlString(date) };
              },
              deserialize: function (router, param) {
                  return parseUrlString(param.date);
              },
              connectOutlets: function (router, date) {
                  var appController = router.get('applicationController'),
                      controller = router.get('dayController');
                  controller.navigateTo(date || new Date());
                  appController.connectOutlet({ outletName: 'header', viewClass: router.namespace.HeaderView, controller: controller });
                  appController.connectOutlet({ outletName: 'content', viewClass: router.namespace.ContentView, controller: controller });
                  appController.connectOutlet({ outletName: 'footer', viewClass: router.namespace.FooterView, controller: controller });
              }
          })
      })
  })
  </code></pre>
  
  <p>This all works fine except of one thing - the application uses jQuery Mobile, and after views re-rendered I need to apply jqm enhancements to the updated elements.
  I tried using <code>didInsertElement</code> callback in each view to enhance the part that has been redrawn. But it doesn't work as expected because jqm has very special treatment of the header and footer blocks. They are not properly enhanced unless all page is re-initialized either by using <code>.trigger('pagecreate')</code> or by using <code>.page('destroy').page()</code> on the root application view.</p>
  
  <p>The issue is - each view calls its own <code>didInsertElement</code>, so the enhancement code executes three times.</p>
  
  <p>Is there a reliable way to execute the enhancement code after route transition is finished and all affected views are rendered and updated with the current data?</p>