Dans 1.7 Ember devrait prendre en charge les paramètres de requête. Je n'ai aucun problème à les utiliser dans le contrôleur, mais j'aimerais y accéder dans Route, idéalement dans le crochet beforeModel mais le modèle hook fonctionnerait également.
Les API docs mentionnent un paramètre queryParam
pour le hook beforeModel mais si j'essaye de l'utiliser, il est toujours indéfini.
Le Guide des paramètres de requête semble suggérer que les paramètres de requête devraient être accessibles en tant que partie du premier paramètre au hook du modèle. Mais cela n'est pas non plus défini. Voir le code ci-dessous pour des exemples.
Existe-t-il un moyen d'accéder aux paramètres de requête depuis Route?
Merci de votre aide.
App.ApplicationRoute = Em.Route.extend({
beforeModel: function(transition, queryParams){
console.log(queryParams.test); //undefined at /?test=123
},
model: function(params){
console.log(params.test); //undefined at /?test=123
}
});
Je suis sûr que c'est un bug, mais vous pouvez y accéder en attendant via l'objet transition:
App.ApplicationRoute = Em.Route.extend({
beforeModel: function(transition){
console.log(transition.queryParams.test);
}
}
En spécifiant les paramètres de requête dans le contrôleur, params
les contiendra automatiquement
ApplicationController = Ember.Controller.extend({
queryParams: ['test'],
test: null
});
Dans la dernière version de ember (2.12 au moment de la rédaction de cette réponse), queryParams est accessible dans le hook du modèle comme suit:
import Ember from 'ember';
export default Ember.Route.extend({
queryParams: {
test: ''
},
model(params) {
console.log(params.test);
},
});
Notez que le segment dynamique et queryParams
sont désormais accessibles via l'objet params
. Étant donné que params
n'est pas disponible dans le crochet beforeModel
, cette solution fonctionne lorsque vous devez accéder au queryParams
dans le crochet model
.
Dans la dernière version ember, vous pouvez obtenir la valeur dans Route sous
import Ember from 'ember';
export default Ember.Route.extend({
beforeModel(params){
console.log(params.queryParams.test); //if the parameter contains test as the key
}
});
Cela ne fonctionne que si locationType est auto dans votre fichier environment.js.