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再次从中获取用户模型。我需要添加什么才能为路线获取正确的数据?

4

2 回答 2

2

每个路由都有自己的模型,默认情况下不会传播。

所以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>

这是此工作的示例

于 2013-08-18T22:37:17.170 回答
0

当您点击时,Ember 会自动调用 User.find(123),/user/123/...因为这是App.UserRoute. 如果您想在访问跟随者路由时获取其他数据,请为 定义一个模型挂钩App.UserFollowersRoute

App.UserFollowersRoute = Ember.Route.extend({
  model: function() {
    user = this.controllerFor('user');
    // Now find and return the list of followers
  }
});
于 2013-08-18T21:22:30.937 回答