David
David

Reputation: 10758

passing a parent route's model to a child route in emberjs

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

Answers (1)

Gaurav
Gaurav

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

Related Questions