Я пытаюсь получить параметры запроса в URL-адресе.
Кажется, что нет простого способа сделать это...
который оставляет меня с чувством, что я, должно быть, пропустил что-то в доке.
Я пытаюсь получить параметры запроса в URL-адресе.
Кажется, что нет простого способа сделать это...
который оставляет меня с чувством, что я, должно быть, пропустил что-то в доке.
железный маршрутизатоp >= 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 +
Интересно три ответа, и никто не предложил полный ответ.
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'
попробуйте tihs:
Router.current().params.parametername;
а в маршрутизации router.js должен быть:
route(routername/:parametername)
Убедитесь, что если вы используете Router.go, ваш первый параметр является именем шаблона, а не дорожкой. параметры запроса не передаются, если вы укажете путь.
Вы можете передавать запросы, подобные этому, в зависимости от того, где вы обращаетесь к маршрутизатору:
В шаблоне
{{pathFor 'routeName' query='queryName=queryValue'}}
В помощнике
Router.go ('routeName',{},{query: 'queryName=queryValue'}
Примечание: пустой объект между routeName
и запросом - это если вы хотите указать какие-либо параметры (обратитесь к полному документу, чтобы увидеть разницу).
Если вы хотите передать несколько запросов, сделайте следующее:
query: 'queryName1=queryValue&queryName2=queryValue'
Не используйте пробелы и не забудьте использовать знак &
.
Кодированный URI undefined Решение:
Лучший способ получить объект параметров запроса:
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