web-dev-qa-db-ja.com

Iron-routerでクエリパラメータを取得する方法は?

URLのクエリパラメータを取得しようとしています。

これを行う簡単な方法はないようです...

これにより、ドキュメント内の何かを見逃したに違いないと感じています。

26
Pat

アイロンルーター> = 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'と等しくなります。

19
David Weldon

電話するだけ

Router.current().params //params is the dict you wanted

iron Router 7.1+で

43
Flying Fisher

興味深いことに、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経由で渡されるパラメータと混同しないでください。

23
Wes Modes

Iron Router 1.0.0では、使用する必要があります

this.params.query.YOUR_PARAMETER_NAME

それを得るために

たとえば、ルートが/ xxx /?a = bの場合

this.params.query.a

「b」を出力します

17
waitingkuo

試してみてください:

 Router.current().params.parametername;

また、router.jsファイルのルーティングは次のようにする必要があります。

route(routername/:parametername)
2
sravanthi

エンコードされた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
1
SagiSergeNadir

Router.goを使用している場合、最初のパラメーターがパスではなくテンプレート名であることを確認してください。パスを指定した場合、クエリパラメータは渡されません。

1
dpatte

ルータにアクセスする場所に応じて、次のようなクエリを渡すことができます。

テンプレート

{{pathFor 'routeName' query='queryName=queryValue'}}

ヘルパー

Router.go ('routeName',{},{query: 'queryName=queryValue'}

注:routeNameとクエリの間の空のオブジェクトは、パラメーターを指定する場合です(完全なドキュメントを参照して違いを確認してください)。

複数のクエリを渡したい場合は、次のようにします。

query: 'queryName1=queryValue&queryName2=queryValue'

スペースを使用せず、&記号を使用することを忘れないでください。

0
Kalin Stoev