我使用angular ui路由器状态提供程序在angularjs app中定义了以下状态.并且,我想用相同的配置定义多个状态,即.使用相同的模板和控制器.
$stateProvider
.state('parent', {
templateUrl: 'parent.html',
abstract: true,
parent: 'apm'
})
.state('parent.list', {
abstract: true,
url: '/list',
templateUrl: 'list.html',
controller: 'ListCtrl'
})
.state('parent.list.closed', {
url: '/q',
templateUrl: 'closed.html'
})
.state('parent.list.details', { // would like to have same template, controller on different state parent.details without list
url: '/:id/:name',
abstract: true,
templateUrl: 'details.html',
controller: 'DetailsCtrl',
resolve: {
.....
.....
}
})
.state('parent.list.details.data', { // would like to have same template, controller on different state parent.details.data without list
url: '/details',
views : {
'view1' : {
templateUrl : 'view1.html'
},
'view2' : {
templateUrl : 'view2.html',
controller : 'View2Ctrl'
},
'view3' : {
templateUrl : 'view3.html'
},
'view4' : {
templateUrl : 'view4.html'
}
}
})
Run Code Online (Sandbox Code Playgroud)
是否有可能做类似的事情
.state(['parent.list.details', 'parent.details'], {
url: '/:id/:name',
abstract: true,
templateUrl: 'details.html',
controller: 'DetailsCtrl',
resolve: {
.....
.....
}
})
Run Code Online (Sandbox Code Playgroud)
任何帮助或建议?
每个州都需要用自己的.state()方法来定义.您将尝试按照上面列出的方式遇到多个问题.最重要的是网址.
你可以这样做:
.state('parent.list', {
url: '/list',
abstract: true,
templateUrl: 'details.html',
controller: 'DetailsCtrl',
resolve: {
.....
.....
}
.state('parent.list.details', {
url: '/:id/:name',
abstract: true,
templateUrl: 'details.html',
controller: 'DetailsCtrl',
resolve: {
.....
.....
}
})
Run Code Online (Sandbox Code Playgroud)
虽然代码在某种意义上不是浓缩或高效的,但您必须声明控制器并在每个状态上部分使用,这是必要的,因为每个状态都需要自己的.state()方法
| 归档时间: |
|
| 查看次数: |
6154 次 |
| 最近记录: |