Obtenir le nom de l'itinéraire actuel dans Ember
J'ai besoin d'obtenir l'itinéraire actuel nom dans mon braise demande; j'ai essayé ceci:
Braise App.Routeur.routeur.currentState undefined
mais il ne fonctionne pas pour moi (il y a probablig quelque chose que je suis missimg...) j'utilise de Braise rc6 et j'ai une application multilingue; dans le applicationRoute-je détecter la langue du navigateur et je me rediriger vers la bonne page avec:
this.transitionTo(userLang);
mais je voudrais être exécutée uniquement lorsque les utilisateurs sont sur la page d'accueil, donc quelque chose comme ceci:
if (currentRoute == 'home'){
this.transitionTo(userLang)
}
source d'informationauteur Cereal Killer
Vous devez vous connecter pour publier un commentaire.
Vous pouvez observer le
application
'scurrentPath
et la placer à l'itinéraire actuel en conséquence, quand elle change:Cette façon, vous avez accès à la
currentPath
quand vous le voulez avecApp.get('currentPath');
E. g.
Espère que cela aide.
Cela a fonctionné pour moi sur 1.3.0-beta (et un rapide coup d'œil à la source pour l'1.1.2 suggère qu'elle serait y travaillent trop):
Note que les états de documentation:
Cependant, je crois qu'il est fortement suggéré que
App.__container__
pas être utilisée dans le code de production. Une plus acceptable alternative serait d'utiliserApp.Router.router.currentHandlerInfos
qui fournit des informations sur l'état actuel de Braise route.Encore une autre option est
currentRouteName
sur leApplicationController
. Vous pouvez ajouterneeds: ['application']
à votre contrôleur, puis le nom de la route aveccontrollers.application.currentRouteName
. Ce sera le retour de quelque chose commeposts.index
.Avec le changement de composants, il est plus difficile d'obtenir le nom de l'itinéraire. La meilleure façon est d'ajouter un initialiseur comme
(à partir de la ligne de commande), et
dans un initializers/router.js. Vous pouvez également injecter dans le contrôleur si vous en avez besoin. Puis il suffit de faire simplement
en JS, ou
dans le modèle.
C'est le seul moyen que j'ai trouvé pour obtenir de manière fiable, et observable dans la Braise 2.4
Si vous voulez obtenir l'itinéraire actuel de votre composant ou de votre contrôleur, vous pouvez injecter service de routage (
routing: Ember.inject.service('-routing')
)(pour plus) et les utiliser:
this.get('routing.currentRouteName')
outhis.get('routing.currentPath')
Exemple avec le composant et de la propriété calculée:
Exemple avec le contrôleur et de la propriété calculée:
De la route en cours dans votre itinéraire, vous avez juste besoin
this.routeName
Exemple avec la route:
Tout comme une mise à jour, en Ember 1.8.1, nous pouvons obtenir la routeName à l'intérieur d'une Braise.Route de l'objet en faisant
this.routeName
.Actuellement comme de la Braise 1.7.0 vous pouvez obtenir le trajet actuel de l'intérieur d'une route en appelant
this.routeName
.La Braise à l'espace de noms de l'API a maintenant un
getOwner
méthode, qui est très utile pour la recherche de lacurrentRouteName
ou, de l'itinéraire d'autres propriétés.J'ai créé un Braise De L'Ornement exemple à démontrer. Utiliser la saisie de texte au-dessus de la "Sortie" du volet à frapper d'autres voies comme
/blue
/green
ou/red
.J'ai eu le même problème pendant un certain temps. puis j'ai commencé à explorer routeur. Il ont toujours un objet d'état qui peut être obtenu à partir de n'importe quel itinéraire à l'aide de
que c'est. Maintenant, vous avez l'itinéraire actuel nom!
si vous voulez l'itinéraire actuel params,
Vous pouvez simplement analyser l'URL actuelle. De cette façon, vous pouvez utiliser votre url complète, par exemple:
et extrait de cette chaîne le suffixe:
qui est l'actuel nom de l'itinéraire.
Une simple fonction JS (qui fonctionne indépendamment de votre Braise version) sera:
Exemple d'utilisation: