URLのクエリパラメータを取得しようとしています。
これを行う簡単な方法はないようです...
これにより、ドキュメント内の何かを見逃したに違いないと感じています。
アイロンルーター> = 1.0
ルートの クエリパラメータ は、this.params.query
のプロパティとして使用できます。
URLが次のような場合:
/posts/5?sort_by=created_at
this.params.query.sort_by
は'created_at'
と等しくなります。
アイロンルーター<1.0
ルートのクエリパラメータは、this.params
のプロパティとして使用できます。
URLが次のような場合:
/posts/5?sort_by=created_at
this.params.sort_by
は'created_at'
と等しくなります。
電話するだけ
Router.current().params //params is the dict you wanted
iron Router 7.1+で
興味深いことに、3つの答えがあり、誰も完全な答えを出しませんでした。
Iron-Router 1.0.x
ルート内から、次を使用します。
// URL: http://example.com/page/?myquerykey=true
this.params.query // returns the full query object
this.params.query.myquerykey // returns a particular query value
同様に、ルートの外部(ただしクライアントコードの内部)およびテンプレートの内部では、次を使用します。
// URL: http://example.com/page/?myquerykey=true
Router.current().params.query
Router.current().params.query.myquerykey
クエリパラメータ。URL経由で渡されるパラメータと混同しないでください。
Iron Router 1.0.0では、使用する必要があります
this.params.query.YOUR_PARAMETER_NAME
それを得るために
たとえば、ルートが/ xxx /?a = bの場合
this.params.query.a
「b」を出力します
試してみてください:
Router.current().params.parametername;
また、router.jsファイルのルーティングは次のようにする必要があります。
route(routername/:parametername)
エンコードされたURI未定義のソリューション:
クエリパラメータオブジェクトを取得するより良い方法は次のとおりです。
this.request.query.MyParam
推奨オプションの使用:
this.params.query.MyParam
EncodedURIパラメーターを使用していない限り問題ありません。encodedURIパラメーターでこのオプションを使用すると、パラメーターはundefinedになります。
以下の例:
{ // console.log(this.params.query)
product: 'Chair',
ip: '172.0.1.183',
message: 'My Little Chair',
request: '100% Discount',
severity: '4',
api_key: 'XXXXX'
}
{ // console.log(this.params.query)
product: 'Chair',
ip: '172.0.1.183',
message: 'My Little Chair',
request: 'undefined', // NOTICE THIS CHANGED TO UNDEFINED!
severity: '4',
api_key: 'XXXXX'
}
Original Query String:
?product=Chair&ip=172.0.1.183&message=My Little Chair&request=100%25%20Discount&severity=4&api_key=XXXXX
Router.goを使用している場合、最初のパラメーターがパスではなくテンプレート名であることを確認してください。パスを指定した場合、クエリパラメータは渡されません。
ルータにアクセスする場所に応じて、次のようなクエリを渡すことができます。
テンプレート
{{pathFor 'routeName' query='queryName=queryValue'}}
ヘルパー
Router.go ('routeName',{},{query: 'queryName=queryValue'}
注:routeName
とクエリの間の空のオブジェクトは、パラメーターを指定する場合です(完全なドキュメントを参照して違いを確認してください)。
複数のクエリを渡したい場合は、次のようにします。
query: 'queryName1=queryValue&queryName2=queryValue'
スペースを使用せず、&
記号を使用することを忘れないでください。