Оберните содержимое $ stateProvider / ui-view перед рендерингом - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть большое количество состояний с обычным содержимым, которые отображаются на странице макета, которая выглядит примерно так:

<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, но там тоже не повезло (не ожидаетобещание).

...