Ember transition.retry looses ID

Ember transition.retry looses ID

by cyclomarc

HTML

<script src="http://libraries.azurewebsites.net/js/bootstrap-2.3.2.js"></script>
<script src="http://libraries.azurewebsites.net/js/moment-2.1.0.js"></script>
<script src="http://libraries.azurewebsites.net/js/handlebars-1.0.0-rc.4.js"></script>
<script src="http://libraries.azurewebsites.net/js/ember-1.0.0-rc.6.js"></script>
<script src="http://libraries.azurewebsites.net/js/ember-data.js"></script>
<link rel="stylesheet" href="http://libraries.azurewebsites.net/css/bootstrap-2.3.2.css">
<script type="text/x-handlebars">
     {{#linkTo "publications"}} Publications {{/linkTo}} 
     <div style="border:1px solid red"> {{outlet}}</div>
   </script>
    
   <script type="text/x-handlebars" id="publications/index">
     List of publications:<br />
     {{#each publication in content }}
        {{#linkTo 'publications.show' publication}}{{publication.name}}{{/linkTo}}<br />
     {{/each}}
   </script>

   <script type="text/x-handlebars" id="publications/show">
     Show detail here ...
   </script>


   <script type="text/x-handlebars" id="login">
     Click on logon to continue ...<br />
     <button {{action 'login' content}}>Login</button>
   </script>

JavaScript

App = Ember.Application.create(
  {
    LOG_TRANSITIONS: true,
  }
);

Ember.Application.initializer({
  name: 'session',

  initialize: function (container, application) {
    App.Session = Ember.Object.extend({
      init: function () {
        this._super();
        this.set('token', null);
        this.set('attemptedTransition', null);
      }

    }).create();
  }
});

App.Router.map(function () {
  this.resource('login', { path: "/login" });
  this.resource('publications', { path: '/publications' }, function () {
    this.route("show", { path: "/:publication_id" });
  });
});

App.PublicationsIndexRoute = Ember.Route.extend({
  model: function () {
    return App.Publication.find();
  }
});

App.PublicationsShowRoute = Ember.Route.extend({
  model: function (params) {
    return App.Publication.findById(id);
  },

  beforeModel: function (transition) {
    //If no token then redirect to login to obtain a token
    if (!App.Session.get('token')) {
      this.redirectToLogin(transition);
    }
  },

  redirectToLogin: function (transition) {
    //Set value of attemptedTransition to the requested transition 
    //so that after login a transition can be done to the requested page
    App.Session.set('attemptedTransition', transition);
    //Transition to login route
    this.transitionTo('login');
  }
});


App.LoginController = Ember.Controller.extend({

  needs: "application",

  login: function () {
    var self = this;

    App.Session.set('token', '1234567890');
    var attemptedTransition = App.Session.get('attemptedTransition');

    if (attemptedTransition) {
      attemptedTransition.retry();
    } else {
      self.transitionToRoute('publications');
    }
  }      
});


//DATA
App.Publication = DS.Model.extend({
  name: DS.attr('string')
});

App.Store = DS.Store.extend({
  revision: 12,
  adapter: 'DS.FixtureAdapter'
});

App.Publication.FIXTURES = [
 {
   id: 1,
   name: 'Publication 1'
 },
 {
   id: 2,
   name: 'Publication 2'
 }
];