我的问题很简单,但我无法在其他任何地方找到解决方案。
例如,我有一个带参数的正常路线状态,
.state('page', {
url: '/page/:pageid',
templateUrl: 'templates/pages.html',
controller: 'pagesCtrl'
})
但是,例如,如果我有1000页,但对于1号和999页,我必须使用另一个模板。我怎么能这么做呢?像
这样的东西 .state('page', {
url: '/page/:pageid',
templateUrl: 'templates/pages.html',
controller: 'pagesCtrl'
})
.state('page', {
url: '/page/1',
templateUrl: 'templates/page1.html',
controller: 'pagesCtrl'
})
.state('page', {
url: '/page/999',
templateUrl: 'templates/page999.html',
controller: 'pagesCtrl'
})
这会起作用吗?我测试过,后两个选项没有用参数覆盖原始状态。
如果我想使用同一个控制器,如何在控制器中加载1和999作为pageid参数?
答案 0 :(得分:1)
绝对不应该为单独的模板增加两个状态。您应该使用单个通用状态,它将在传递状态参数的帮助下使用templateUrl
。
<强>代码强>
.state('page', {
url: '/page/:id',
templateUrl: function($stateParams){
var template = $stateParams.id.indexOf([1, 1000]) > -1?'pages.html'
:'page'+$stateParams.id+'.html';
return 'templates/'+template ,
}
controller: 'pagesCtrl'
})