2016-07-25 15 views
0

後、私はルートを持っている:すべての場合において

$stateProvider.state('keeper.telepay.category', { 
    url: '/category-{id}/country-{cid}/region-{rid}' 
} 

を、私はこのルートで$ state.goを使用するとき、私は「すべて」にRIDを変更したいです私url'llが

/カテゴリ-1 /国-195 /地域-すべてのように私は$ rootScopeでそれを行うことを試みた。$上の

なるので、それは、値が '0' であるかどう( '$ stateChangeStart')、運がありません。任意の提案||方向は非常に評価されるだろう。

UPDATE私は$ STATECHANGEに試したものをここで

:私はこのリンクhttp://angular-ui.github.io/ui-router/feature-1.0/interfaces/params.paramdeclaration.html#squash

につまずいてきた

誤っ
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){ 
    if(toState.name == 'keeper.telepay.category' && toState.params.rid == 0) { 
     toState.params.rid = 'all'; 
    } 
} 
+0

あなたが '$ rootScope。$ on( '$ stateChangeStart')'で試したことを、おそらく投稿してください。 – KreepN

+1

多分あなたは[$ urlMatchFactory](http://angular-ui.github.io/ui-router/site/#/api/ui.router.util.$urlMatcherFactory)を使って試用を開始して、独自のparam型を作成することができます。 – MMhunter

+0

良い提案、thx – Kindzoku

答えて

1

だから純粋なソリューションです:

$stateProvider.state('keeper.telepay.category', { 
    url: '/category-{id}/country-{cid}/region-{rid}', 
    params: { 
     cid: '195', 
     rid: { 
      value: '0', 
      squash: "all" <-- do the trick 
     } 
    } 
}); 

ここで説明します。

現在のパラメータ値がデフォルト値と同じ場合に、デフォルトのパラメータ値がURLでどのように表されるかを設定します。

:パラメータのデフォルト値がつぶれない

3つのスカッシュの設定があります。これはエンコードされ、URLに含まれます

true:パラメータのデフォルト値はURLから省略されています。パラメータの先頭にステートのurl宣言のスラッシュが続いている場合、それらのスラッシュの1つが省略されます。これにより、よりきれいなURLを表示することができます。

「任意の文字列」:パラメータのデフォルト値は、任意の任意のプレースホルダに置き換えられます。

関連する問題