Ember.js - 索引路由与 "top-level" 资源路由?

Ember.js - Index route vs. "top-level" resource route?

在 Ember.js 中创建 "standard" crud 资源时,索引路由和 "main" 路由有什么区别?

例如,用户资源:

// app.router.js

Router.map(function() {
    this.resource('users', function() {
      this.route('new');
      this.route('show', { path: '/:user_id'});
      this.route('edit', { path: '/:user_id/edit'});
    });
});

哪条路线应包含以下 "main" 模型挂钩?

// app/routes/users/index.js OR app/routes/users.js?

export default Ember.Route.extend({
    model: function() {
        return this.store.find('user');
    }
});

换句话说,我应该使用 UsersRoute 还是 UsersIndexRoute?我觉得这很混乱。非常感谢任何帮助。

如果需要给定模型来呈现所有嵌套路由,则应将模型挂钩到 UsersRoute 路由,即 indexneweditshow,因为它会在进入任何这些路线时被调用。

如果模型只在渲染/路线时需要,而不是/:user_id路线,那么它应该在UsersIndexRoute路线中加载。

有关何时触发模型挂钩嵌套路由的示例,请参阅 JsBin

对于您的用例,它可以是任何一种方式 - 如果您希望 master-child 类型的 UI 也呈现用户列表当 editing/showing/adding 用户时,你应该加载并渲染 UsersRoute 中的用户列表,然后只在嵌套路由中渲染额外的内容;相反,如果您不想在嵌套路由中呈现用户列表,只需在 UsersIndexRoute.

中加载并呈现它们