2013-03-14 4 views
5

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

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

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

Благодарности

ответ

4

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

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

ПРИМЕЧАНИЕ: Если вы сделаете это, угасающий выведет предупреждение консоль «Материнской маршрут не делают в основной розетке ...»

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

+1

Спасибо за ответ. Я действительно понял, что ты сказал, когда я задал вопрос. То, что я сделал, я сохранил рецепты.hbs, но все, что у него было, было {{outlet}}. Тогда у меня было новое и шоу, определенное, как я их. Все, что мне нужно было сделать, это создать новый шаблон для индекса вместе с объектом маршрута и использовать {{#linkTo 'recipes.index'}} Рецепты {{/ linkTo}} вместо {{#linkTo 'recipes}}. ..{{/ссылка к}} – spullen

0

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

Подумайте о ресурсах как о вещах, так и о маршрутах в качестве действий.

1

Быстрая заметка с направляющих обтекателей

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

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

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

Вам не нужно, чтобы изменить настройки маршрута. Как упоминал Майк, ember отобразит шаблоны new.hbs и show.hbs в {{outlet}} в приложении. Hbs