Skip to content

Commit 5e7a263

Browse files
committed
Async transitions
This is the Ember side of tildeio/router.js#19 All set, just keep in mind that there is probably more discussion to be had over the `beforeModel` and `afterModel` hook names, which might change before RC6.
1 parent 30e7ac2 commit 5e7a263

File tree

13 files changed

+1147
-587
lines changed

13 files changed

+1147
-587
lines changed

ember-dev.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ testing_suites:
1919
- "package=all&jquery=1.8.3&nojshint=true"
2020
- "package=all&jquery=git&nojshint=true"
2121
- "package=all&jquery=git2&nojshint=true"
22-
- "package=all&enablerouteto&nojshint=true"
2322
- "package=all&extendprototypes=true&nojshint=true"
2423
- "package=all&extendprototypes=true&jquery=git&nojshint=true"
2524
- "package=all&extendprototypes=true&jquery=git2&nojshint=true"

packages/ember-application/lib/system/application.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,14 @@ DeprecatedContainer.prototype = {
136136
137137
In addition to creating your application's router, `Ember.Application` is
138138
also responsible for telling the router when to start routing. Transitions
139-
between routes can be logged with the LOG_TRANSITIONS flag:
139+
between routes can be logged with the LOG_TRANSITIONS flag, and more
140+
detailed intra-transition logging can be logged with
141+
the LOG_TRANSITIONS_INTERNAL flag:
140142
141143
```javascript
142144
window.App = Ember.Application.create({
143-
LOG_TRANSITIONS: true
145+
LOG_TRANSITIONS: true, // basic logging of successful transitions
146+
LOG_TRANSITIONS_INTERNAL: true // detailed logging of all routing steps
144147
});
145148
```
146149

packages/ember-application/tests/system/reset_test.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,10 @@ test("When an application is reset, the router URL is reset to `/`", function()
155155
router = application.__container__.lookup('router:main');
156156

157157
location = router.get('location');
158-
location.handleURL('/one');
158+
159+
Ember.run(function() {
160+
location.handleURL('/one');
161+
});
159162

160163
application.reset();
161164

@@ -168,7 +171,9 @@ test("When an application is reset, the router URL is reset to `/`", function()
168171
equal(get(applicationController, 'currentPath'), "index");
169172

170173
location = application.__container__.lookup('router:main').get('location');
171-
location.handleURL('/one');
174+
Ember.run(function() {
175+
location.handleURL('/one');
176+
});
172177

173178
equal(get(applicationController, 'currentPath'), "one");
174179
});

packages/ember-routing/lib/ext.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,16 @@
11
require('ember-routing/ext/controller');
22
require('ember-routing/ext/view');
3+
4+
/**
5+
@module ember
6+
@submodule ember-views
7+
*/
8+
9+
// Add a new named queue after the 'actions' queue (where RSVP promises
10+
// resolve), which is used in router transitions to prevent unnecessary
11+
// loading state entry if all context promises resolve on the
12+
// 'actions' queue first.
13+
14+
var queues = Ember.run.queues,
15+
indexOf = Ember.ArrayPolyfills.indexOf;
16+
queues.splice(indexOf.call(queues, 'actions') + 1, 0, 'routerTransitions');

packages/ember-routing/lib/helpers/link_to.js

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -118,23 +118,13 @@ Ember.onLoad('Ember.Handlebars', function(Handlebars) {
118118

119119
if (get(this, '_isDisabled')) { return false; }
120120

121-
var router = this.get('router');
122-
123-
if (Ember.ENV.ENABLE_ROUTE_TO) {
124-
125-
var routeArgs = args(this, router);
121+
var router = this.get('router'),
122+
routeArgs = args(this, router);
126123

127-
router.routeTo(Ember.TransitionEvent.create({
128-
transitionMethod: this.get('replace') ? 'replaceWith' : 'transitionTo',
129-
destinationRouteName: routeArgs[0],
130-
contexts: routeArgs.slice(1)
131-
}));
124+
if (this.get('replace')) {
125+
router.replaceWith.apply(router, routeArgs);
132126
} else {
133-
if (this.get('replace')) {
134-
router.replaceWith.apply(router, args(this, router));
135-
} else {
136-
router.transitionTo.apply(router, args(this, router));
137-
}
127+
router.transitionTo.apply(router, routeArgs);
138128
}
139129
},
140130

packages/ember-routing/lib/system.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,3 @@ require('ember-routing/system/dsl');
22
require('ember-routing/system/controller_for');
33
require('ember-routing/system/router');
44
require('ember-routing/system/route');
5-
require('ember-routing/system/transition_event');

0 commit comments

Comments
 (0)