web-dev-qa-db-fra.com

Comment accéder aux paramètres de requête depuis la route dans Ember 1.7

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
   }
}); 
20
jancervinka

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);
   }
}
21
typeoneerror

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
});
7
Ramy Ben Aroya

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.

7
vantony

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.

5
iOS dev