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.
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'
.
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.
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'
essayez ceci:
Router.current().params.parametername;
et dans router.js le routage de fichier doit être:
route(routername/:parametername)
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.
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 &
.
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