现在我的路线如下:
.state('tab.simon', {
url: '/plan/:exerciseId', <== Notice here
resolve: {
authenticated: ['djangoAuth', function(djangoAuth){
return djangoAuth.authenticationStatus();
}],
},
views: {
'tab-plan': {
templateUrl: '/templates/simon.html',
controller: 'simonCtrl',
data: {
css: '/css/simon.css'
}
}
},
cache: false
})
exerciseId的值可以是8/9/10/11/12,对于每个这样的路线,即/plan/8
或/plan/9
等,都有一个单独的控制器和相应的模板以及一个css文件。
现在写我已将其编码如下:
.state('tab.simon', {
url: '/plan/8',
resolve: {
authenticated: ['djangoAuth', function(djangoAuth){
return djangoAuth.authenticationStatus();
}],
},
views: {
'tab-plan': {
templateUrl: '/templates/simon.html',
controller: 'simonCtrl',
data: {
css: '/css/simon.css'
}
}
},
cache: false
})
.state('tab.pinpoint', {
url: '/plan/9',
resolve: {
authenticated: ['djangoAuth', function(djangoAuth){
return djangoAuth.authenticationStatus();
}],
},
views: {
'tab-plan': {
templateUrl: '/templates/pinpointReaction.html',
controller: 'pinpointCtrl',
data: {
css: '/css/pinpoint.css'
}
}
},
cache: false
})
这不是最佳选择,在这种情况下,我无法像$stateparams
一样利用plan/:exerciseId
我该如何处理?
答案 0 :(得分:0)
我不知道技术上有多可能,但从逻辑上讲,我解决了我的问题。
基本上,每条路线都有它自己的控制器,所以传递exerciseId
作为stateParam是不必要的,正如我最初想的那样。我可以在我的控制器中硬编码,如下所示:
$scope.gameType=9
var url = "https://127.0.0.1:8000/api2/games/get_game/" + $scope.gameType + "/";
而不是
var exerciseType = Number($stateParams.exerciseId);
var url = "https://127.0.0.1:8000/api/exercises/get_exercise/" + exerciseType + "/";