2013-08-27 13 views
10

Czy ktoś może lepiej wyjaśnić, dzieje się z implikowanej trasy indeksu i kontrolerów w Ember JS?Ember JS Index trasy

Zobacz ten przykład, dlaczego zachowanie różni się w tych dwóch przykładach?

trasa Index wyraźnie zdefiniowane

http://jsbin.com/ILAP/1/

Trasa indeksu domniemanych

http://jsbin.com/ILAP/2/

Co jest mylące dla mnie dlatego zagnieżdżanie zachowanie działa w drugim przykładzie, ale nie pierwszy .

Odpowiedz

8

Jest to struktura studentów/trasa uczeń:

students 
----index 
----student 
--------index 

Pierwszy przypadek

trasa Index wyraźnie zdefiniowane

szablony:

<script type="text/x-handlebars" data-template-name="students"> 
    {{ outlet }} 
</script>  

<script type="text/x-handlebars" data-template-name="students/index"> 
    ... omitted ... 
    <div class="well"> 
    Expecting to render student template here: 
    <br /> 
    {{ outlet }} 
    </div> 

</script> 

<script type="text/x-handlebars" data-template-name="student"> 
    <h2>Student</h2> 
    <h3>{{name}}</h3> 
    <h4>{{grade}}</h4> 
    <h4>{{gpa}}</h4> 
</script> 

Po przejściu na student.index najpierw dołączany jest szablon student i po student/index. Ponieważ nie zastąpiłeś domyślnych konwencji, przez renderTemplate. Miejsce, w którym szablon jest renderowany, znajduje się w głównym gniazdku (gniazdku bez nazwy) o nazwie {{outlet}}, szablonu trasy nadrzędnej. Szablon student zostanie wstawiony do głównego gniazdka . Nie students/index, ponieważ jest to rodzeństwo. To jest powód, dla którego wszystkie twoje treści są zastępowane. A student/index zostanie wstawiony w student

drugim przypadku

Trasa indeksu domniemanych

szablony:

<script type="text/x-handlebars" data-template-name="students"> 
    ... omitted ... 
    <div class="well"> 
    Expecting to render student template here: 
    <br /> 
    {{ outlet }} 
    </div> 

</script> 

<script type="text/x-handlebars" data-template-name="student"> 
    <h2>Student</h2> 
    <h3>{{name}}</h3> 
    <h4>{{grade}}</h4> 
    <h4>{{gpa}}</h4> 
</script> 

Tym razem, podobnie jak w poprzednim przykładzie, rozdzielczość szablonów się nie zmienia. Ale tym razem nie mamy student/index. Tak więc po raz pierwszy jest renderowany wylot student w , ponieważ brak jest student/index, jest on ignorowany. Ostatecznym rezultatem jest szablon, którego oczekujesz.

Podsumowanie

Korzystanie konwencje domyślne. Szablony będą renderowane w szablonie macierzystym, a nie w rodzime.

+0

Dzięki za jasne wyjaśnienie. To pomaga! Zatem szablon indeksu jest naprawdę opcjonalny. I punkt o rodzeństwie ma sens. –

Powiązane problemy