Ответ 1
Это структура маршрута студентов/студентов:
students
----index
----student
--------index
Первый случай
Указанный маршрут явно определен
Шаблоны:
<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>
Когда вы делаете переход к student.index
, сначала добавляется шаблон student
и после student/index
. Поскольку вы не переопределяете соглашения по умолчанию, используйте renderTemplate
. Место, где отображается шаблон, находится в основной розетке (выход без имени) aka {{outlet}}
шаблона родительского маршрута. Таким образом, шаблон student
будет вставлен в основную розетку students
. Не students/index
, потому что это брат. Это причина, по которой весь ваш контент заменен. И student/index
будет вставлен в student
Второй случай
Указывается маршрут указателя
Шаблоны:
<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>
На этот раз, как и предыдущий образец, разрешение шаблонов не изменяется. Но на этот раз у нас нет student/index
. Таким образом, сначала отображается вывод student
в students
, после того, как отсутствует student/index
, он игнорируется. Конечным результатом является шаблон, который вы ожидаете.
Резюме
Использование условных условных обозначений. Шаблоны будут отображаться в родительском, а не в браке, родительском шаблоне маршрута.