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'
}
];