Ember.js: L'utilisation de this.transitionTo ignore le chargement du modèle

Créé le 22 déc. 2013  ·  3Commentaires  ·  Source: emberjs/ember.js

Je ne sais pas s'il s'agit d'un comportement intentionnel, mais laissez-moi vous expliquer. Si j'utilise une transitionTo sur une route qui a des segments dynamiques, la méthode de modèle sur la route de destination n'est jamais appelée. Essentiellement, je ne fais que passer par un paramètre avec un identifiant et je veux toujours charger le bon modèle.

Si j'actualise la page avec la bonne URL, le modèle se charge très bien. J'ai monté un codepen pour faire la démonstration.

http://codepen.io/anon/pen/LsfhB

La version actuelle se déconnectera de la console "Je suis ici". Si vous regardez IndexRoute, il y a une transition commentée. Si cela est activé, le "Je suis ici" ne se déclenche jamais.

Est-ce prévu ? Si oui, où dois-je charger mon modèle pour l'itinéraire de confirmation ?

Commentaire le plus utile

Si vous modifiez la transition en this.transitionTo('confirm', 1); cela fonctionnera comme prévu.

IIRC si vous passez des primitives (chaîne, nombre) à la transition au lieu d'un modèle complet, il considère qu'il s'agit d'un ID et l'utilise pour construire les paramètres de l'appel à model , mais si vous passez quelque chose de complexe (dans dans ce cas, un objet), alors il traite cela comme si vous avez passé le modèle et n'appelle donc pas le crochet de modèle.

La documentation de l'API pourrait probablement utiliser un exemple de transmission d'ID au lieu de modèles complets : http://emberjs.com/api/classes/Ember.Route.html#method_transitionTo

J'espère que ça a du sens

Tous les 3 commentaires

Si vous modifiez la transition en this.transitionTo('confirm', 1); cela fonctionnera comme prévu.

IIRC si vous passez des primitives (chaîne, nombre) à la transition au lieu d'un modèle complet, il considère qu'il s'agit d'un ID et l'utilise pour construire les paramètres de l'appel à model , mais si vous passez quelque chose de complexe (dans dans ce cas, un objet), alors il traite cela comme si vous avez passé le modèle et n'appelle donc pas le crochet de modèle.

La documentation de l'API pourrait probablement utiliser un exemple de transmission d'ID au lieu de modèles complets : http://emberjs.com/api/classes/Ember.Route.html#method_transitionTo

J'espère que ça a du sens

C'est logique maintenant. Ma première question instinctive après votre commentaire était de savoir comment transmettre plusieurs paramètres ? Mais il semble que vous les transmettez simplement en tant qu'arguments séparés.

this.transitionTo('confirm.url', 1, 'the-slug-I-want');

Cela fonctionne bien pour moi.

Question ici, si vous avez une route avec des sous-routes toutes avec segment dynamique :
par exemple
this.route('organization', { chemin : 'organizations/:organization_id' }, function() {
this.route('project', { chemin : 'projects/:project_id' }, function() {
this.route('screen', { path: 'screens/:screen_id' });
});
et je suis sur une autre route, par exemple la route auth. Quand je vais à this.transitionTo('organization.project.screen',
{id_organisation : 'grege23-234-4c3e-96fe-234423' },
{ID_projet : '234234-23423-4b99-a492-234' },
{screen_id : '34534-48f4-471d-ad17-3'45 });
Je ne vois rien, car le modèle n'est pas chargé.
Comment pourriez-vous aller pour celui-ci?

Cette page vous a été utile?
0 / 5 - 0 notes