Ember.js - маршрут указателя по маршруту "верхнего уровня"?

При создании "стандартного" ресурса crud в Ember.js, в чем разница между маршрутом индекса и "основным" маршрутом?

Например, ресурс пользователя:

// 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'});
    });
});

Какой маршрут должен содержать следующий "основной" крючок модели?

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

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

Другими словами, следует ли использовать UserRoute или UsersIndexRoute? Я нахожу это очень запутанным. Любая помощь приветствуется.

Ответ 1

Вы должны поместить привязку модели к маршруту UsersRoute, если требуется, чтобы данная модель отображала все вложенные маршруты, то есть index, new, edit и show, так как она будет вызываться при вводе любого из этих маршрутов.

Если модель требуется только при рендеринге маршрута /, маршрута не /:user_id, то он должен быть загружен в маршрут UsersIndexRoute.

См. JsBin для примера того, когда запускаются вложенные маршруты модели hooks.

Для вашего прецедента это может быть в любом случае - если вы хотите иметь мастер-дочерний тип пользовательского интерфейса, где отображается список пользователей, также при редактировании/показе/добавлении пользователя, вы должны загружать и отображать список пользователей в UsersRoute, а затем просто визуализировать дополнительный контент во вложенном маршруте; если вместо этого вы не хотите отображать список пользователей во вложенных маршрутах, просто загрузите их и выполните рендеринг в UsersIndexRoute.