У меня есть большое количество состояний с обычным содержимым, которые отображаются на странице макета, которая выглядит примерно так:
<div class="col-lg-12">
<div id="main-panel" class="panel panel-inverse">
<div class="panel-heading">
<ol id="breadcrumb" class="breadcrumb"></ol>
</div>
<div class="panel-body">
<div ui-view></div> <!-- <== content inserted here -->
</div>
</div>
</div>
Все мои состояния (например, 'app.home', 'app.reports ') наследуется от абстрактного состояния (' app ').
Теперь у меня есть требование, чтобы домашняя страница ТОЛЬКО имела другой макет, что-то вроде:
<div class="col-lg-4">
<div class="panel">
<div class="panel-heading">
Reports
</div>
<div class="panel-body">
View your reports...
</div>
</div>
</div>
<div class="col-lg-4">
<div class="panel">
<div class="panel-heading">
Charts
</div>
<div class="panel-body">
View your charts...
</div>
</div>
</div>
...etc
Эту домашнюю страницу нельзя отобразить на текущей странице макета, поскольку на ней уже есть оболочка #main-panel
.Я также не хочу удалять его из макета, а затем должен пройти через все не домашние состояния / страницы и неоднократно добавлять его вокруг содержимого.
Можно ли при желании применить этот макет #main-panel
во время переключения маршрута без слишком большого количества изменений?Поэтому для домашней страницы я бы НЕ применил ее, поэтому col-lg-4
s был бы на верхнем уровне, тогда как для всего остального я бы применил ее (оберните содержимое templateUrl в #main-panel
html).Возможно ли это?
Примечания
Я попытался использовать второе абстрактное состояние с другим шаблоном, в который я мог бы подключить состояние app.home
, т.е. сделать его new.home
, но затем многодругой код вокруг приложения использует $state.go("app.home")
и должен быть изменен, плюс он влияет на крошку.
Я смотрел на использование функции templateProvider, думая, что могу переключать шаблоны в зависимости от состояния.В идеале я бы сделал это для абстрактного состояния, но это вызывается только один раз, а не один раз за изменение состояния.И если я делаю это в templateProvider для каждого состояния, то мне приходится вносить много изменений в $ state ...
Я думал, что смогу сделать это в $ stateChangeStart, но там тоже не повезло (не ожидаетобещание).