How to get the query parameters in Iron-router?

前端 未结 8 1334
不知归路
不知归路 2020-12-13 10:24

I am trying to get the query parameters in the url.

There doesn\'t seem to be an easy way to do this...

which leaves me with the feeling that I must have mis

相关标签:
8条回答
  • 2020-12-13 10:49

    Ensure that if you are using Router.go that your first parameter is a template name, and not a path. query parameters are not passed if you specify a path.

    0 讨论(0)
  • 2020-12-13 10:54

    Encoded URI undefined Solution:

    The better way to get the query parameters object is:

    this.request.query.MyParam
    

    Using the suggested option of:

    this.params.query.MyParam
    

    Is ok as long as you are not working with encodedURI parameters, when using this option with encodedURI parameter, the parameter will be equal to undefined.

    Example below:

    { // 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
    
    0 讨论(0)
  • 2020-12-13 10:56

    You can pass queries like this depending on where you accessing the router:

    In the template

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

    In the helper

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

    Note: the empty object between the routeName and the query is if you want to specify any parameters (refer to the full docs to see the difference).

    If you would like to pass multiple queries do it like this:

    query: 'queryName1=queryValue&queryName2=queryValue'
    

    Don't use spaces and remember to use the & sign.

    0 讨论(0)
  • 2020-12-13 11:03

    Interestingly three answers and no one offered the complete answer.

    Iron-Router 1.0.x

    From within a route, use:

    // URL: http://example.com/page/?myquerykey=true
    this.params.query   // returns the full query object
    this.params.query.myquerykey   // returns a particular query value
    

    Similarly, outside of the route (but still inside the client code), and inside your template, use:

    // URL: http://example.com/page/?myquerykey=true
    Router.current().params.query
    Router.current().params.query.myquerykey
    

    Query parameters, not to be confused with parameters passed via the URL.

    0 讨论(0)
  • 2020-12-13 11:03

    In Iron Router 1.0.0, you need to use

    this.params.query.YOUR_PARAMETER_NAME
    

    to get it

    For example, if you route is /xxx/?a=b

    this.params.query.a
    

    outputs 'b'

    0 讨论(0)
  • 2020-12-13 11:06

    try tihs:

     Router.current().params.parametername;
    

    and in router.js file routing must be:

    route(routername/:parametername)
    
    0 讨论(0)
提交回复
热议问题