2013-03-14 19 views
5

Mam router z odpowiednimi szablonami dla każdej trasy (i obiektów trasy). Chcę móc wyświetlać każdy szablon niezależnie od jego rodzica, co oznacza, że ​​nie chcę, aby zagnieżdżone trasy były renderowane do gniazda wyjściowego szablonu macierzystego. Zasadniczo tworzenie oddzielnej "strony" dla każdej zagnieżdżonej trasy.Trasa zagnieżdżona w emberjs bez użycia gniazda zasobów

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

Używam ember1.0.0-rc1

Dzięki

Odpowiedz

4

Chcę być w stanie wyświetlić każdy szablon niezależnie od jego rodzica, czyli nie chcę zagnieżdżone trasy mają być świadczone na wylocie szablonu nadrzędnego.

Może stwierdzenie oczywistości, ale tak właśnie się stanie, jeśli nie utworzysz szablonu dla zasobu. W twoim przypadku, jeśli nie utworzysz szablonu , ember wyświetli szablony new.hbs i show.hbs w {{outlet}} w application.hbs.

UWAGA: Jeśli to zrobisz, Ember wyświetli ostrzeżenie konsola „Bezpośrednim trasa rodzic nie czyni do głównego gniazda ...”

Jest to wyjaśnione w sposób bardziej szczegółowy w ember routing guide

+1

Dzięki za odpowiedź. Rzeczywiście zrozumiałem, co powiedziałeś chwilę po tym, jak zadałem pytanie. To, co zrobiłem, zachowałem przepisy recipes.hbs, ale wszystko, co w nim było, to {{outlet}}. Potem miałem nowe i show zdefiniowane tak, jak je miałem. Wszystko, co musiałem zrobić, to stworzyć nowy szablon dla indeksu wraz z obiektem trasy i użyć {{#linkTo 'recipes.index'}} Recipes {{/ linkTo}} zamiast tylko {{#linkTo 'recipes "}}. ..{{/łączyć z}} – spullen

0

ember.js nie obsługuje trasy gniazdowania, że ​​obsługuje tylko gniazdowania zasobów. Ostatecznie zagnieżdżona trasa może zawierać trasę.

Pomyśl o zasobach jako rzeczach i trasach jako działaniach.

1

Krótka notatka z przewodników embera

Jeśli zdefiniujesz zasób przy użyciu this.resource i nie podasz funkcji, nie zostanie utworzona niejawna trasa resource.index. W takim przypadku/resource użyje tylko ResourceRoute, ResourceController i szablonu zasobów.

Twój routingu jest w porządku i @mikegrassotti jest poprawna, chociaż jeśli chcesz indeks dla „receptury” bez posiadające swoje „nowe” i „show” szablony tras zagnieżdżone wewnątrz „receptury” (nr mistrza/detail) będziesz musiał stworzyć szablon receptur/indeksu bez wylotu w środku.

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

Nie musisz zmienić konfigurację trasy. Jak wspomniał Mike, ember spowoduje wyświetlanie szablonów new.hbs i show.hbs w {{outlet}} w aplikacji.hbs