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

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

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

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

Спасибо


person spullen    schedule 14.03.2013    source источник


Ответы (3)


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

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

ПРИМЕЧАНИЕ. Если вы сделаете это, Ember выведет консольное предупреждение «Непосредственный родительский маршрут не отобразился в основной выход…»

Более подробно это объясняется в руководстве по маршрутизации Ember.

person Mike Grassotti    schedule 14.03.2013
comment
Спасибо за ответ. Я действительно понял, что вы сказали, через некоторое время после того, как я задал вопрос. Что я сделал, так это сохранил recipes.hbs, но все, что в нем было, это {{outlet}}. Затем у меня были новые и шоу, определенные так, как они у меня были. Все, что мне нужно было сделать, это создать новый шаблон для индекса вместе с объектом маршрута и использовать {{#linkTo 'recipes.index' }}Recipes{{/linkTo}} вместо простого {{#linkTo 'recipes'}}. ..{{/ссылка на}} - person spullen; 14.03.2013

Быстрая заметка от руководств по эмберу

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

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

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

You do not need to change your route setup. As Mike mentioned above ember will render the new.hbs and show.hbs templates into the {{outlet}} in application.hbs

person oneiota    schedule 05.03.2014

Ember.js не поддерживает вложенные маршруты, он поддерживает вложенные ресурсы. Конечный вложенный маршрут может содержать маршрут.

Думайте о ресурсах как о вещах, а о маршрутах — как о действиях.

person Zach Riggle    schedule 14.03.2013