Вложенный маршрут в emberjs без использования выхода ресурса


У меня есть маршрутизатор с соответствующими шаблонами для каждого маршрута (и объектов маршрута). Я хочу иметь возможность отображать каждый шаблон независимо от его родителя, то есть я не хочу, чтобы вложенные маршруты отображались на выходе родительского шаблона. По сути, создание отдельной "страницы" для каждого вложенного маршрута.

App.Router.map(function() {
  this.resource('recipes', function() {
    this.route('new');
    this.route('show', { path: '/:recipe_id' });
  });
});

Я использую ember1. 0. 0-rc1

Спасибо

3 5

3 ответа:

Я хочу иметь возможность отображать каждый шаблон независимо от его родителя, то есть я не хочу, чтобы вложенные маршруты отображались на выходе родительского шаблона.

Возможно, констатация очевидного, но это именно то, что произойдет, если вы не создадите шаблон для ресурса. В вашем случае, если вы не создадите шаблон recipes.hbs, то ember отобразит шаблоны new.hbs и show.hbs в {{outlet}} в application.hbs.

Примечание: Если вы сделаете это, Ember выведет консоль предупреждение " непосредственный Родительский маршрут не оказывался в основной розетке ..."

Это объясняется более подробно в руководстве ember routing guide

Краткое примечание из руководства ember

Если вы определяете ресурс, используя это.ресурс и не поставляют функцию, то неявный ресурс.маршрут индекса не создается. В этом случае /resource будет использовать только шаблон ResourceRoute, ResourceController и resource.

Ваш маршрут в порядке и @mikegrassotti правильно, хотя Если вы хотите, чтобы индекс для "рецептов" без вложенных шаблонов маршрутов" new "и" show " внутри "рецепты" (без мастера / детали) вам нужно будет создать шаблон рецепты/индекс без выхода внутри.

<script type="text/x-handlebars" data-template-name="recipes/index">
<ul>
  {{#each}}
    <li>{{recipe}}</li>  
  {{/each}}
</ul>

Вам не нужно менять настройки маршрута. Как Майк упоминал выше, Эмбер будет представлять новое.ОБД и показать.шаблоны hbs в {{outlet}} в приложении.hbs

Эмбер.js не поддерживает вложенные маршруты, он только поддерживает вложенные ресурсы. В конечном счете вложенный маршрут может содержать маршрут.

Воспринимайте ресурсы как вещи, а маршруты-как действия.