0

私の質問は簡単ですが、他の場所で解決策を見つけることができませんでした。しかし例えば、私は1000ページを持っている場合、私は別のテンプレートを使用する必要がナンバー1とナンバー999ページのAngularJSまたはIonicで特定のルート状態のURLパラメータを処理するにはどうすればよいですか?どのように特定のパラメータにルート状態を上書きするのですか?

例えば、私はパラメータを使用して、通常のルート状態を持っている、

.state('page', { 
    url: '/page/:pageid', 
    templateUrl: 'templates/pages.html', 
    controller: 'pagesCtrl' 
    }) 

。どうすればいい?何かのように

.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' 
    }) 

私はテストしましたが、後の2つのオプションはパラメータで元の状態を上書きしていません。

同じコントローラを使用する場合は、コントローラーのpageidパラメーターとして1と999をロードする方法はありますか?

答えて

1

間違いなく別のテンプレートの状態を2つ増やすべきではありません。渡された状態パラメータの助けを借りて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' 
}) 
+0

ああ、ありがとうございました!だから私はその機能に状態チェックを入れることができますか? –

+0

@ tomriddle_1234確かに、それはうまくいくはずです –

関連する問題