2016-09-08 8 views
2
$stateProvider.state('state1', { 
    url:'/state1/:param1/and/{param2:.+}', 
    templateUrl: 'state1.html', 
    controller: 'State1Controller', 
}); 

私は上記のように正規表現を使用することによって、param2を必要としています。角型UIルータ - パラメータの設定方法

$urlRouterProvider.otherwise("/"); 

    $stateProvider.state('otherwise',{ 
     url: '/', 
     templateUrl:'default.html' 
    }); 

今すぐ結果:

state1/1/and/1state1に行く、それは空の場合、デフォルトの状態ではロードする必要があります。良い。

state1/1/andは、otherwiseになります。良い。

しかし、

state1/1/and/は無い状態になります!いずれの状態も読み込まれません。 /にリダイレクトされていません。何?!

パラメータを正しく設定するにはどうすればよいですか?

+0

State1Controllerには何がありますか?あなたのコンソールの中の何か? 'state1'の何かのようなサウンドが爆発しているかもしれません。 「どちらの状態もロードされていない」と思うようになると、あなたはビューを見逃していますか? – adamdport

+0

'state1.html'がロードされていません。 'ui-view'は空白です。また、 'State1Controller'に' console.log( 'loaded') 'を置き、コンソールに出力しません。エラーもありません。 – Shawn

+2

期待通りに、次のプランカが動作しています:http://plnkr.co/edit/XTDJ5FAHNh63RoECKwCQ?p=preview –

答えて

1

Angular js ui-routerのurlパラメータは、デフォルトではオプションです。上記の場合、$ stateParamsを使用して、必要なパラメータが定義されているかどうかを確認できます。以下のコードを確認してください。

if ($stateParams.param2=== undefined) { 
    // Navigate to home. 
    $location.path('/'); 
} 

これで問題が解決します。ありがとう。

関連する問題