Tak, możesz, jest to napisane w instrukcji .
Najpierw należy zdefiniować określony zestaw nazwanych widoków w stanie abstrakcyjnym, w tym widok, w którym można umieścić wszystkie widoki treści, takie jak home.html
i umieścić go w bezimiennym widoku (pusty ciąg).
Jak być może zauważyłeś, poniższe demo pokazuje stan root o nazwie app
, który jest również stanem abstrakcyjnym (oznacza to, że nie możesz nawigować w tym stanie). Ma trzy widoki, każdy reprezentuje nazwę, która odpowiada ui-view
s zdefiniowana w index.html
.
W widoku bez nazwy zawiera content.html
, który ma bezimienny ui-view
, który będzie reprezentował wszystkie stany podrzędne stanu app
. W ten sposób można udostępnić wartości nav.html
i footer.html
wszystkim swoim stanom, jeśli doda się te stany pod stanem app
. Przykładem może być stan app.home
i app.items
. Aby dowiedzieć się więcej na ten temat, przeczytaj link dodany powyżej.
DEMO
JavaScript
$urlRouterProvider.otherwise('/home');
$stateProvider.state('app', {
abstract: true,
views: {
nav: {
templateUrl: 'nav.html',
controller: 'NavController as Nav'
},
'': {
templateUrl: 'content.html',
controller: 'ContentController as Content'
},
footer: {
templateUrl: 'footer.html',
controller: 'FooterController as Footer'
}
}
})
.state('app.items', {
url: '/items',
templateUrl: 'items.html',
controller: 'ItemsController as Items'
})
.state('app.home', {
url: '/home',
templateUrl: 'home.html',
controller: 'HomeController as Home'
});
HTML
index.html
<ui-view name="nav"></ui-view>
<ui-view></ui-view>
<ui-view name="footer"></ui-view>
content.html
<hr>
<ui-view></ui-view>
<hr>
Chłodny człowiek, dziękuję. – Bazinga
Dziękuję, szukałem dokładnego wyjaśnienia. Ktoś właśnie powiedział mi, żebym użył ng-include, ale wiedziałem, że istnieje lepszy sposób na pozostanie w ruterze. – theartofbeing