我正在使用Angularjs和ui-router构建应用程序。我的结构是一个像这样的嵌套状态。
.state('ls.resource', {
url : '/:resource',
abstract: true,
template: "<div ui-view></div>"
})
.state('ls.resource.id', {
url: "/{id:int}",
abstract: true,
template: '<div ui-view ></div>'
})
.state('ls.resource.id.view', {
url: '/{id:int}',
templateUrl: '/view_location.html',
controller: '...'
})
现在,我想在不同的模板之间切换,但处于相同的状态。 例如:
.state('ls.resource.id', {
url: '/',
templateUrl: function($stateParams) {
switch ($stateParams.resource) {
case 'location':
return '/view_location.html';
break;
controller: function($stateParams) {
switch ($stateParams.resource) {
case 'location':
return 'LocationCtrl';
break;
})
当资源位于&#39;和别的东西,如果不同。 (这个解决方案不起作用)。
如果你有想法解决这个问题?我在听。
答案 0 :(得分:1)
要在状态中有条件地添加controller
状态,您应该使用controllerProvider
选项而不是controller
,基本上将返回该状态的controller
名称。
还要确保关闭switch
,templateUrl
&amp; controller
功能与}
<强>代码强>
.state('ls.resource.id', {
url: '/',
templateUrl: function($stateParams) {
switch ($stateParams.resource) {
case 'location':
return '/view_location.html';
break;
default:
return '/view_default.html';
}
},
controllerPrivider: function($stateParams) {
switch ($stateParams.resource) {
case 'location':
return 'LocationCtrl';
break;
defautlt:
return 'SomeDefaultCtrl' //should return some controller name
}
}
})