2016-08-06 9 views
0

をルーティング、次のように私はルートを持っている:角度ルーティング:同じURLが、条件付き今

.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このような各ルートIE用/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 
    }) 

これは最適ではなく、この場合には、私は、私はこれを処理するにはどうすればよいplan/:exerciseId

を持つよう$stateparamsの利点を取ることができませんか?

答えて

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 + "/"; 
関連する問題