- 使用 ui-view 指令定义抽象 ListIndex 状态以保存子状态。
- 使用解析对象定义 ListIndex 的子级 ListCategory 状态,以访问控制器 List 和 Item 控制器中的类别信息。
- 定义作为 ListCategory 子级的 ListCategoryItem 状态。
一些快速示例代码:
states.ListIndex = {
url: '/list',
abstract: true,
template: '<div ui-view/>'
};
states.ListCategory = {
url: '/list/:categoryId',
controller: ['$scope', 'category', function($scope, category) {
$scope.category = category;
}],
templateUrl: 'category.html',
resolve: {
category: ['CategoryService', '$stateParams', function(CategoryService, $stateParams) {
return CategoryService.get($stateParams.categoryId);
}]
};
states.ListCategoryItem = {
url: 'list/:categoryId/:itemId',
controller: ['$scope', 'item', function($scope, item) {
$scope.item = item;
}],
templateUrl: 'item.html',
resolve: {
item: ['ItemService', '$stateParams', function(ItemService, $stateParams) {
return ItemService.get($stateParams.itemId);
}]
}
}
//iterate states and add each of them to $stateProvider
//...
类别模板:
<ul ng-repeat="item in category.items">
<li>{{item.title}}</li>
</ul>
项目模板:
<div item-view="item"></div>
<div ng-include="'category.html'" class="small"></div>
因为导航到 ListCategoryItem 状态会保留类别对象,所以您可以在项目模板中生成小版本的导航菜单,而无需任何额外的指令。