J'ai mis à jour quelques projets vers la version 3.0.0 maintenant et même si l'un d'eux va bien, l'autre génère des erreurs chaque fois que j'appelle transitionTo
, comme
router.js:1011 Uncaught Error: More context objects were passed than there are dynamic segments for the route: projects
at NamedTransitionIntent.applyToHandlers (router.js:1011)
at NamedTransitionIntent.applyToState (router.js:940)
at Router.getTransitionByIntent (router.js:1229)
at Router.transitionByIntent (router.js:1348)
at doTransition (router.js:1947)
at Router.transitionTo (router.js:1418)
at Class._doTransition (router.js:561)
at Class.transitionTo (routing.js:18)
at session.save.then.s (session.js:104)
at tryCatcher (rsvp.js:215)
Il semble que le problème soit dans applyToHandlers
:
var objects = this.contexts.slice(0);
// ...
if (objects.length > 0) {
throw new Error('More context objects were passed than there are dynamic segments for the route: ' + targetRouteName);
}
En le regardant avec le débogueur, il semble y avoir passé deux fois pour une raison quelconque, et lors de la première passe, objects
est []
(comme il se doit car il n'y a pas de segments dynamiques ici) mais sur le second c'est [undefined]
qui échoue à la validation de la longueur.
Étant donné que je n'ai pas ce problème dans mon autre application, je ne sais pas si j'ai rencontré un cas limite avec Ember ou un problème avec mon propre code ici et je me demande si vous pourriez m'indiquer une direction où Je pourrais approfondir cela.
Hmm, il semble que cela soit probablement lié à votre configuration (je n'ai pas vu cela rapporté par d'autres), pourriez-vous essayer de l'isoler dans une application de démonstration plus petite pour nous faciliter la recherche ?
Un peu de recherche et j'ai découvert que cela ne se produit que dans les services où j'ai utilisé le service de routage privé : routing: service('-routing')
.
Le remplacer par router: service()
résout mon problème, mais y a-t-il un endroit où cela est documenté ? J'avais l'impression que le service de routeur public était encore à venir.
Commentaire le plus utile
Un peu de recherche et j'ai découvert que cela ne se produit que dans les services où j'ai utilisé le service de routage privé :
routing: service('-routing')
.Le remplacer par
router: service()
résout mon problème, mais y a-t-il un endroit où cela est documenté ? J'avais l'impression que le service de routeur public était encore à venir.