Reputation: 10758
I have the following router defined:
export default Router.map(function() {
this.route('user', { path: '/users/:username'}, function () {
this.route('tasks', { path: '/tasks'});
});
});
I then have the following routes:
// routes/user.js
export default Ember.Route.extend({
model(params) {
return params.username;
}
});
// routes/user/index.js
export default Ember.Route.extend({
model() {
// how do i get the username?
return ajax(/* get user's profile */);
}
});
// routes/user/tasks.js
export default Ember.Route.extend({
model() {
// how do i get the username?
return ajax(/* get user's tasks */);
}
});
And this template:
{{!-- templates/user.hbs --}}
<h1>{{model}}</h1>
{{outlet}}
How can I get username in the child routes to use in an ajax request?
Upvotes: 1
Views: 2009
Reputation: 12806
You can use paramsFor or modelFor:
modelFor: http://emberjs.com/api/classes/Ember.Route.html#method_modelFor
return ajax(baseUrl + "/" + this.modelFor('user') + "/profile");
paramsFor: http://emberjs.com/api/classes/Ember.Route.html#method_paramsFor
return ajax(baseUrl + "/" this.paramsFor('user').username + "/tasks");
Upvotes: 3