使用带有嵌套状态和视图的 stateProvider https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views
$stateProvider.state('/home', {
url: '/home',
templateUrl: '',
controller: ''
})
.state('home.app1', {
url: '/home/app1',
templateUrl: '',
controller: ''
})
.state('home.app1.cat1', {
url: '/home/app1/cat1',
templateUrl: '',
controller: ''
})
.state('home.app1.cat1.cat2', {
url: '/home/app1/cat1/cat2',
templateUrl: '',
controller: ''
})
.state('home.app1.cat1.cat2.cat3', {
url: '/home/app1/cat1/cat2/cat3',
templateUrl: '',
controller: ''
})
.state('home.app2', {
url: '/home/app2',
templateUrl: '',
controller: ''
})
.state('home.app3', {
url: '/home/app3',
templateUrl: '',
controller: ''
})
$routerUrlProvider.otherwise('/home'); // if no path matched
我没有提到命名视图。你可以通过链接,它有很大帮助。
但上述内容对状态进行了繁重的结构化。因此,您需要在单个状态中显示相关信息。例如,如果有三个类别,并且您想在单个页面中显示,那么您可以定义这样的状态。
.state('home.app1',{
url: '/home/app1',
views: {
"view1": {
templateUrl: 'cat1.html',
controller: ''
},
"view2": {
templateUrl: 'cat2.html',
controller: ''
},
"view3": {
templateUrl: 'cat3.gtml',
controller: ''
}
}
})
或者,您可以为所有视图设置一个父控制器。
现在,在 html 中你将拥有
<div>
<div ui-view="view1"></div>
<div ui-view="view2"></div>
<div ui-view="view3"></div>
</div>