2017-04-09 1 views
0

J'ai un site Web construit à partir de Ember.js. Un utilisateur peut accéder à une page via l'URL http://..../view?showTitle=true. Cependant, je ne veux pas exposer explicitement le paramètre showTitle = true à l'utilisateur (ce qui signifie que l'utilisateur ne verra que http://..../view). Cette URL est générée automatiquement et sert d'URL de destination de redirection. Donc, je dois le retirer manuellement quelque part avant le chargement de la page. Mais j'ai toujours besoin de cette valeur de ce paramètre de requête pour interroger les données. Y a-t-il un moyen d'y parvenir (un exemple serait formidable)? Qu'en est-il faire sans rafraîchir le routeur?Comment faire pour supprimer un paramètre de requête de l'URL sans actualiser le routeur dans Ember js

Répondre

1

En fait, un exemple de votre scénario serait plus :)

Il y a d'autres façons de stocker des données pendant la transition vers une route. Tels que: stocker les paramètres dans transition objet ou stocker la valeur dans un service. Créez une route de redirection, utilisez le crochet beforeModel pour saisir la valeur des paramètres de requête, puis effectuez une redirection vers la route réelle.

Un exemple de travail est: ember-twiddle-1

Par ailleurs, même si vous ne décrivez pas votre queryParams dans vos itinéraires, vous pouvez y accéder via transition.queryParams. Cela semble un peu hacky. Mais cela fonctionne: ember-twiddle-2 (Note: Il ne fonctionne pas dans la même voie.)

Mise à jour:

Au crochet setupController vous pouvez remplacer les paramètres du régulateur. Vous pouvez donc supprimer les paramètres de l'URL. ember-twiddle-3

+0

Merci pour l'exemple. 'this.transitionTo ({queryParams: {showTitle: undefined}});' fonctionne pour transiter vers le même modèle. Y a-t-il un moyen d'y parvenir sans faire appel à la transition? – Hengstar

+0

Oui. En remplaçant le hook 'setupController'. Je viens de mettre à jour ma réponse et ajouté la troisième twiddle. – ykaragol

+0

Ouais, c'est génial! Il semble bien fonctionner sur twiddle. Mais quand je l'exécute localement cela ne fonctionne que lorsque je clique sur les liens dans la page. Ouvrir manuellement * http: // localhost: 4200/my-route? ShowTitle = false * ne mettra pas à jour le lien pour supprimer le paramètre. Dans mon cas, cette URL est composée de back end. Nous pouvons donc le prendre comme entrée de l'utilisateur. – Hengstar