2016-07-06 6 views
1

angularで検索アプリを開発中です。ui-routerを使用しています。ui-routerを使用した動的パラメータ

要件:

  • 検索フォームがあまりにも多くのフィールドを持っており、すべてがオプションでなければなりません。
  • ユーザーは、結果リストを含むページを表示するURLを別のユーザーと共有する必要があります。だから私は

    path/to/url/list?p=123&v=876 
    
    path/to/url/list?c=yes&a=true&p=123 
    
    path/to/url/list?z=yes&c=yes&a=true&p=123 
    
    path/to/url/list?z=yes&v=876&a=true&p=123 
    

    そして、無限の組み合わせのようなURLを持つことができ

(だから私は、クエリ文字列を使用する必要があります)。私は$ location.search()を使用してjson形式のすべてのパラメータを取得できることを知っています。すばらしい!質問は、どうすればui-routerでURL状態を定義できますか?明示的にurlのすべてのパラメータはオプションではありません。私は多くの記事を読んだが、具体的な答えは見つからなかった。

+0

定義された1つのパラメータ - クエリ。すべてのパラメータを入れてください。 –

+0

すべての検索パラメータを1つのパラメータで渡すにはどうすればよいですか? base64でparamsをエンコードすることは合理的な選択肢でしょうか? –

+0

'$ location'からパラメータを取得している場合は、状態 –

答えて

0

$locationからパラメータを取得する場合は、明示的に状態を定義する必要はありません。

0

私が思うに、最良の方法は$ stateProvider構成の「決意」プロパティを使用することです:

$stateProvider.state('mystate', { 
    // Some code here 
    resolve: { 
    queryData: ['$location', ($location) => { 
     $location.absUrl(); // Contains your full URI 
     return true; 
    }] 
    } 
}); 

それは初期のようなものです。その後、ui-routerはURIを切断しますが、必要なデータは保存されます。この場合もブラウザのアドレス入力で直接URIを渡すときに問題なく動作します。

また、$ urlRatterProviderを$ urlMatcherで設定することもできますが、これは難しくなります。

関連する問題