web-dev-qa-db-fra.com

Comment obtenir les paramètres de requête dans Iron-router?

J'essaie d'obtenir les paramètres de requête dans l'URL.

Il ne semble pas y avoir de moyen facile de faire cela ...

ce qui me laisse le sentiment d'avoir raté quelque chose dans la doc.

26
Pat

routeur de fer> = 1.0

Les paramètres de requête d'un itinéraire sont disponibles en tant que propriétés de this.params.query.

Si votre URL ressemblait à:

/posts/5?sort_by=created_at

alors this.params.query.sort_by serait égal à 'created_at'.


routeur de fer <1.0

Les paramètres de requête d'un itinéraire sont disponibles en tant que propriétés de this.params.

Si votre URL ressemblait à:

/posts/5?sort_by=created_at

alors this.params.sort_by serait égal à 'created_at'.

19
David Weldon

Fait intéressant, trois réponses et personne n’a offert la réponse complète.

Iron-Router 1.0.x

Depuis un itinéraire, utilisez:

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

De même, en dehors de la route (mais toujours dans le code client) et dans votre modèle, utilisez:

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

Paramètres de requête, à ne pas confondre avec les paramètres transmis via l'URL.

23
Wes Modes

Dans Iron Router 1.0.0, vous devez utiliser 

this.params.query.YOUR_PARAMETER_NAME

pour l'obtenir

Par exemple, si votre route est/xxx /? A = b

this.params.query.a

sorties 'b'

17
waitingkuo

essayez ceci:

 Router.current().params.parametername;

et dans router.js le routage de fichier doit être:

route(routername/:parametername)
2
sravanthi

Si vous utilisez Router.go, assurez-vous que votre premier paramètre est un nom de modèle et non un chemin. Les paramètres de requête ne sont pas transmis si vous spécifiez un chemin.

1
dpatte

Vous pouvez transmettre des requêtes comme celle-ci en fonction de l'endroit où vous accédez au routeur:

Dans le template

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

Dans le helper

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

Remarque: L'objet vide entre routeName et la requête est si vous souhaitez spécifier des paramètres (reportez-vous à la documentation complète pour voir la différence).

Si vous souhaitez transmettre plusieurs requêtes, procédez comme suit:

query: 'queryName1=queryValue&queryName2=queryValue'

N'utilisez pas d'espaces et n'oubliez pas d'utiliser le signe &.

0
Kalin Stoev

Solution indéfinie URI codée:

Le meilleur moyen d’obtenir l’objet paramètres de requête est:

this.request.query.MyParam

En utilisant l'option suggérée de:

this.params.query.MyParam

Est ok tant que vous ne travaillez pas avec les paramètres encodedURI, lorsque vous utilisez cette option avec le paramètre encodedURI, le paramètre sera égal à non défini.

Exemple ci-dessous:

{ // 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
SagiSergeNadir