Я не уверен, что название этого вопроса является лучшим, но я опишу свою ситуацию. У меня есть приложение Ember с маршрутом «Главная», который является целевой страницей, и несколькими другими маршрутами, которые являются частью приложения. Шаблон «Главная» не использует какой-либо макет с другими шаблонами, но мне нужно иметь возможность перейти к этим другим маршрутам с маршрута «Главная».EmberJS: Разная домашняя страница макета против приложения
Покушение 1 - Ветвление Шаблон приложения (то же имя на выходе):
<script type="text/x-handlebars">
{{#if isHome}}
{{outlet main}}
{{else}}
{{render header}}
<section class="container content-wrapper main-content clear-fix" >
{{outlet main}}
{{error-dialog}}
</section>
{{/if}}
</script>
App.ApplicationController = Ember.Controller.extend({
isHome: function(){
return this.get('currentPath') == 'home';
}.property('currentPath'),
});
Это вызвало странный баг, когда первый шаблон воспроизводимые в пути еще после перехода с главной страницы не будет выгружать из DOM после последующих переходов. Я объяснил это тем, что экземпляр вывода main
отличается в зависимости от оператора if, но это всего лишь предположение.
Попытка 2 - Ветвление Шаблон приложения (различные имена выходных):
<script type="text/x-handlebars">
{{#if isHome}}
{{outlet home}}
{{else}}
{{render header}}
<section class="container content-wrapper main-content clear-fix" >
{{outlet main}}
{{error-dialog}}
</section>
{{/if}}
</script>
я перегружен renderTemplate
в HomeRoute
, чтобы указать его к домашней розетке, но он отказался загружать содержимое в эту розетку.
ПОПЫТКА 3 - Ветвление обертка элементы:
<script type="text/x-handlebars">
{{#if isNotHome}}
{{render header}}
<section class="container content-wrapper main-content clear-fix" >
{{/if}}
{{outlet main}}
{{#if isNotHome}}
{{error-dialog}}
</section>
{{/if}}
</script>
Это в основном работает, но в результате оказывается HTML не завернуть содержание main outlet
в <section>
, как я бы ожидать. Вместо этого он обрабатывает тег <section>
, как если бы он заканчивался в первом операторе if, который разбивает мой CSS.
Я чувствую, что, должно быть, мне не хватает чего-то фундаментального.
Как вы установить значение переменной 'ISHOME'? – Adam
@Adam добавлен, см. Править –