Skip to content

Commit e79b729

Browse files
committed
convert transition API usages into Router calls
- Route#transitionTo - Route#replaceWith - Controller#transitionToRoute - Controller#replaceWithRoute
1 parent 80e93be commit e79b729

7 files changed

+34
-18
lines changed

Diff for: guides/release/models/pushing-records-into-the-store.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ import fetch from 'fetch';
140140

141141
export default class ConfirmPaymentRoute extends Route {
142142
@service store;
143+
@service router;
143144

144145
@action
145146
confirm(data) {
@@ -150,7 +151,7 @@ export default class ConfirmPaymentRoute extends Route {
150151
.then(response => response.json())
151152
.then(digitalInventory => {
152153
this.store.push(digitalInventory);
153-
this.transitionTo('thank-you');
154+
this.router.transitionTo('thank-you');
154155
});
155156
}
156157
}

Diff for: guides/release/routing/asynchronous-routing.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@ import Route from '@ember/routing/route';
124124
import { action } from '@ember/object';
125125

126126
export default class GoodForNothingRoute extends Route {
127+
// @service router;
128+
127129
model() {
128130
return Promise.reject("FAIL");
129131
}
@@ -133,7 +135,7 @@ export default class GoodForNothingRoute extends Route {
133135
alert(reason); // "FAIL"
134136

135137
// Can transition to another route here, e.g.
136-
// this.transitionTo('index');
138+
// this.router.transitionTo('index');
137139

138140
// Uncomment the line below to bubble this error event:
139141
// return true;

Diff for: guides/release/routing/defining-your-routes.md

+3-4
Original file line numberDiff line numberDiff line change
@@ -341,15 +341,16 @@ import { action } from '@ember/object';
341341

342342
export default class SomeRouteRoute extends Route {
343343
@service store;
344+
@service router;
344345
//
345346
@action
346347
async visitUserProfile(id) {
347348
this.store.findRecord('user', id).then(function (user) {
348349
// Success callback
349-
this.transitionTo('user.profile', user);
350+
this.router.transitionTo('user.profile', user);
350351
}).catch(function () {
351352
// Error callback
352-
this.transitionTo('not-found', 404);
353+
this.router.transitionTo('not-found', 404);
353354
}
354355
}
355356
}
@@ -366,6 +367,4 @@ handlers](https://api.emberjs.com/ember/release/classes/Route).
366367
Once the routes are defined, how do we go about transitioning between them within our application? It depends on where the transition needs to take place:
367368
368369
- From a template, use [`<LinkTo />`](https://api.emberjs.com/ember/release/classes/Ember.Templates.components/methods/LinkTo?anchor=LinkTo) as mentioned above
369-
- From a route, use the [`transitionTo()`](https://api.emberjs.com/ember/release/classes/Route/methods/transitionTo?anchor=transitionTo) method
370-
- From a controller, use the [`transitionToRoute()`](https://api.emberjs.com/ember/release/classes/Controller/methods/transitionToRoute?anchor=transitionToRoute) method
371370
- From anywhere else in your application, such as a component, inject the [Router Service](https://api.emberjs.com/ember/release/classes/RouterService) and use the [`transitionTo()`](https://api.emberjs.com/ember/release/classes/RouterService/methods/transitionTo?anchor=transitionTo) method

Diff for: guides/release/routing/loading-and-error-substates.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ import { action } from '@ember/object';
232232

233233
export default class ArticlesOverviewRoute extends Route {
234234
@service store;
235+
@service router;
235236

236237
model(params) {
237238
return this.store.findAll('privileged-model');
@@ -240,7 +241,7 @@ export default class ArticlesOverviewRoute extends Route {
240241
@action
241242
error(error, transition) {
242243
if (error.status === '403') {
243-
this.replaceWith('login');
244+
this.router.replaceWith('login');
244245
} else {
245246
// Let the route above this handle the error.
246247
return true;

Diff for: guides/release/routing/preventing-and-retrying-transitions.md

+7-2
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,16 @@ they've logged in.
7575

7676
```javascript {data-filename=app/routes/some-authenticated.js}
7777
import Route from '@ember/routing/route';
78+
import { inject as service } from '@ember/service';
7879

7980
export default class SomeAuthenticatedRoute extends Route {
81+
@service router;
82+
8083
beforeModel(transition) {
8184
if (!this.controllerFor('auth').userIsLoggedIn) {
8285
let loginController = this.controllerFor('login');
8386
loginController.previousTransition = transition;
84-
this.transitionTo('login');
87+
this.router.transitionTo('login');
8588
}
8689
}
8790
}
@@ -92,6 +95,8 @@ import Controller from '@ember/controller';
9295
import { action } from '@ember/object';
9396

9497
export default class LoginController extends Controller {
98+
@service router;
99+
95100
@action
96101
login() {
97102
// Log the user in, then reattempt previous transition if it exists.
@@ -101,7 +106,7 @@ export default class LoginController extends Controller {
101106
previousTransition.retry();
102107
} else {
103108
// Default back to homepage
104-
this.transitionToRoute('index');
109+
this.router.transitionTo('index');
105110
}
106111
}
107112
}

Diff for: guides/release/routing/query-params.md

+5-6
Original file line numberDiff line numberDiff line change
@@ -111,21 +111,20 @@ active query params for this to be true.
111111

112112
### transitionTo
113113

114-
`Route#transitionTo` and `Controller#transitionToRoute`
115-
accept a final argument, which is an object with the key `queryParams`.
114+
`Router#transitionTo` accepts a final argument, which is an object with the key `queryParams`.
116115

117116
```javascript {data-filename=app/routes/some-route.js}
118-
this.transitionTo('post', object, { queryParams: { showDetails: true }});
119-
this.transitionTo('posts', { queryParams: { sort: 'title' }});
117+
this.router.transitionTo('post', object, { queryParams: { showDetails: true }});
118+
this.router.transitionTo('posts', { queryParams: { sort: 'title' }});
120119

121120
// if you want to transition the query parameters without changing the route
122-
this.transitionTo({ queryParams: { direction: 'asc' }});
121+
this.router.transitionTo({ queryParams: { direction: 'asc' }});
123122
```
124123

125124
You can also add query params to URL transitions:
126125

127126
```javascript {data-filename=app/routes/some-route.js}
128-
this.transitionTo('/posts/1?sort=date&showDetails=true');
127+
this.router.transitionTo('/posts/1?sort=date&showDetails=true');
129128
```
130129

131130
### Opting into a full transition

Diff for: guides/release/routing/redirection.md

+12-3
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,13 @@ Router.map(function() {
3333

3434
```javascript {data-filename=app/routes/index.js}
3535
import Route from '@ember/routing/route';
36+
import { inject as service } from '@ember/service';
3637

3738
export default class IndexRoute extends Route {
39+
@service router;
40+
3841
beforeModel(/* transition */) {
39-
this.transitionTo('posts'); // Implicitly aborts the on-going transition.
42+
this.router.transitionTo('posts'); // Implicitly aborts the on-going transition.
4043
}
4144
}
4245
```
@@ -66,11 +69,14 @@ Router.map(function() {
6669

6770
```javascript {data-filename=app/routes/posts.js}
6871
import Route from '@ember/routing/route';
72+
import { inject as service } from '@ember/service';
6973

7074
export default class PostsRoute extends Route {
75+
@service router;
76+
7177
afterModel(model, transition) {
7278
if (model.get('length') === 1) {
73-
this.transitionTo('post', model.get('firstObject'));
79+
this.router.transitionTo('post', model.get('firstObject'));
7480
}
7581
}
7682
}
@@ -117,11 +123,14 @@ transition validated, and not cause the parent route's hooks to fire again:
117123

118124
```javascript {data-filename=app/routes/posts.js}
119125
import Route from '@ember/routing/route';
126+
import { inject as service } from '@ember/service';
120127

121128
export default class PostsRoute extends Route {
129+
@service router;
130+
122131
redirect(model, transition) {
123132
if (model.get('length') === 1) {
124-
this.transitionTo('posts.post', model.get('firstObject'));
133+
this.router.transitionTo('posts.post', model.get('firstObject'));
125134
}
126135
}
127136
}

0 commit comments

Comments
 (0)