Как получить параметры запроса в Iron-router?

Я пытаюсь получить параметры запроса в URL-адресе.

Кажется, нет простого способа сделать это...

что оставляет меня с ощущением, что я, должно быть, что-то пропустил в документе.


person Pat    schedule 14.04.2014    source источник


Ответы (8)


железный маршрутизатор >= 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'.

person David Weldon    schedule 14.04.2014
comment
Я тоже так думал, но параметры запроса не отображаются в this.params - person Pat; 14.04.2014
comment
Это должно работать, попробуйте использовать этот отладочный хук Router.onBeforeAction(function(){console.log(this.params);}); и введя любой URL-адрес с параметрами запроса для доступа к вашему приложению, вы увидите их в консоли. - person saimeunt; 14.04.2014
comment
@saimeunt - как я уже сказал, this.params пуст - person Pat; 14.04.2014
comment
@pat Было бы очень полезно, если бы вы могли обновить свой вопрос, указав упрощенную версию URL-адреса и маршрута. - person David Weldon; 14.04.2014
comment
получается, что this.params.sort_by установлен, но консоль javascript не показывает его при выполнении this.params самостоятельно - person Pat; 23.04.2014
comment
В консоли он показывает параметры как массив нулевой длины, но вы можете развернуть его и увидеть, что запросы заданы как свойства. Я не уверен, что вы можете перебирать параметры, не зная, что они из себя представляют. - person darkadept; 19.07.2014
comment
Теперь это this.params.query.sort_by в Iron Router v1.0. - person Brad Vogel; 10.11.2014
comment
Поскольку этот ответ больше не является правильным, можем ли мы изменить правильный ответ? - person Wes Modes; 28.04.2015

Просто позвони

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

в железном роутере 7.1+

person Flying Fisher    schedule 20.06.2014
comment
Вы спасатель жизни. Благодаря тонну! - person Sheedo; 10.07.2018

Интересно три ответа, и никто не дал полный ответ.

Железный маршрутизатор 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.

person Wes Modes    schedule 30.04.2015
comment
молодец, это следует принять как правильный и полный ответ. - person TheNastyOne; 26.05.2015
comment
Хороший ответ, если вы хотите получить значения в помощниках по шаблонам, особенно если вы хотите получить значения запроса вне маршрута. - person Manu; 27.05.2016

В Iron Router 1.0.0 вам нужно использовать

this.params.query.YOUR_PARAMETER_NAME

чтобы получить это

Например, если вы используете маршрут /xxx/?a=b

this.params.query.a

выводит «б»

person waitingkuo    schedule 22.10.2014

попробуй:

 Router.current().params.parametername;

а в файле router.js маршрутизация должна быть:

route(routername/:parametername)
person sravanthi    schedule 11.05.2016

Если вы используете Router.go, убедитесь, что ваш первый параметр — это имя шаблона, а не путь. параметры запроса не передаются, если вы указываете путь.

person dpatte    schedule 25.07.2015

Закодированный 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
person SagiSergeNadir    schedule 19.05.2016

Вы можете передавать такие запросы в зависимости от того, где вы получаете доступ к маршрутизатору:

В шаблоне

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

В помощнике

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

Примечание: пустой объект между routeName и запросом, если вы хотите указать какие-либо параметры (обратитесь к полным документам, чтобы увидеть разницу).

Если вы хотите передать несколько запросов, сделайте это следующим образом:

query: 'queryName1=queryValue&queryName2=queryValue'

Не используйте пробелы и не забывайте использовать знак &.

person Kalin Stoev    schedule 31.07.2015