2016-12-01 13 views
0

$routeProvideのURLを入力するとどうすればいいですか?www.example.com/2010/10 ??URLの角の経路条件2010/10

.when('/{year:[0-9]+/{month:[0-9]+', { 
    templateUrl: WPAngular.partials + 'archive.html', 
    controller: 'ByYear' 
}) 

が、その動作していないような

私が書かれている状態。

+0

は、うーん、それは閉じ中括弧 'することができ '/ {年:[0-9] +}/{月:[0-9] +}' 'また、正規表現のパラメータをサポートしていないngRouteを使用していますが、' ui-router 'は行います。 –

+0

ルーティングでregexpsを使用するときは注意してください。悪い驚きを持つことができます... – Mistalis

+0

@Mistalisは正しいですが、 ''/ archives /:year /:month' 'のような他のルートとの競合を防ぐコンテキストを作成することを検討してください。 –

答えて

1

私はルートプロバイダーがそこで正規表現をサポートしているとは思っていませんが、もしあなたが一致しなかった場合は{です。一致させることができるさまざまな項目については、https://docs.angularjs.org/api/ngRoute/provider/ $ routeProviderを参照してください。

理由だけではない:

.when('/:year/:month', { 
    templateUrl: WPAngular.partials + 'archive.html', 
    controller: 'ByYear' 
}) 

、その後は他の場所で数値を検証します。

+0

paramsが数値かどうかを検証して確認するにはどうすればいいですか? –

+0

コントローラや '.when'の' resolve'ブロックでそれらを検証することができますが、@ vjarystaが示唆し、ui-routerを使うように切り替えるのが最善の方法です。 – Duncan

1

$routeProviderは正規表現をサポートしていません。

ui-routerを使用することをお勧めします。$routeProviderには多くの機能があります。

あなたのconfには、そのようになります。

$stateProvider 
    .state('by-year', { 
    url: '/{year:[0-9]+}/{month:[0-9]+}', 
    templateUrl: WPAngular.partials + 'archive.html', 
    controller: 'ByYear' 
    }); 
関連する問題