2013-08-18 80 views
1

我有一個嵌套的航線結構是這樣的:嵌套路線加載父模型

App.Router.map(function() { 
    this.resource('user', {path: '/user/:user_id'}, function() { 
    this.route('followers', {path: '/followers'}); 
    }); 
}); 

當我打的user/123/followers路線我希望它會自動從user/123/followers取模型,但它只是獲取用戶模型再從user/123。我需要添加什麼,以便爲路線提取正確的數據?

回答

2

每條路線都有自己的模型,而這並不是propaged,默認情況下。

所以App.UserRoute模型,返回當前模型預期一樣:

App.User.find(params.user_id) 

但由於App.UserFollowersRoute有自己的模型掛鉤,那麼你必須提供它。 您可以使用modelFor輕鬆完成此操作。

App.UserFollowersRoute = Ember.Route.extend({ 
    model: function() { 
    return this.modelFor('user'); 
    } 
}); 

modelFor從命名路線中查找模型。所以modelFor('user'),將從App.UserRoute檢索模型。

而在你user/followers模板,你將有當前用戶,在目前情況下:

<script type="text/x-handlebars" data-template-name="user/followers">   
    <h2>{{name}} followers:</h2> 
    <ul> 
    {{#each followers}} 
     <li>{{name}}</li> 
    {{/each}} 
    </ul> 
</script> 

Here a sample with this working

0

當您點擊/user/123/...時,Ember將自動調用User.find(123),因爲這是App.UserRoute的默認模型鉤子。如果你想獲取當追隨者路由訪問額外的數據,定義模型鉤App.UserFollowersRoute

App.UserFollowersRoute = Ember.Route.extend({ 
    model: function() { 
    user = this.controllerFor('user'); 
    // Now find and return the list of followers 
    } 
});