Ember.js: Usando this.transitionTo salta la carga del modelo

Creado en 22 dic. 2013  ·  3Comentarios  ·  Fuente: emberjs/ember.js

No estoy seguro de si esto es un comportamiento intencional, pero déjame explicarte. Si utilizo una transiciónTo en una ruta que tiene segmentos dinámicos, nunca se llama al método del modelo en la ruta de destino. Básicamente, solo estoy pasando por un parámetro con una identificación y todavía quiero cargar el modelo correcto.

Si actualizo la página con la URL correcta, el modelo se carga bien. Monté un codepen para demostrarlo.

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

La versión actual cerrará la sesión en la consola "Estoy aquí". Si observa IndexRoute, hay una transición comentada. Si está habilitado, el mensaje "Estoy aquí" nunca se activa.

¿Es esto esperado? Si es así, ¿dónde debería cargar mi modelo para la ruta de confirmación?

Comentario más útil

Si cambia la transición para que sea this.transitionTo('confirm', 1); , funcionará como espera.

IIRC si pasa primitivas (cadena, número) a la transición en lugar de un modelo completo, entonces calcula que es un ID y lo usa para construir los parámetros para la llamada a model , pero si pasa algo complejo a través (en en este caso, un objeto), luego lo trata como si hubiera pasado el modelo y, por lo tanto, no llama al gancho del modelo.

Los documentos de la API probablemente podrían funcionar con un ejemplo de pasar ID en lugar de modelos completos: http://emberjs.com/api/classes/Ember.Route.html#method_transitionTo

Espero que tenga sentido

Todos 3 comentarios

Si cambia la transición para que sea this.transitionTo('confirm', 1); , funcionará como espera.

IIRC si pasa primitivas (cadena, número) a la transición en lugar de un modelo completo, entonces calcula que es un ID y lo usa para construir los parámetros para la llamada a model , pero si pasa algo complejo a través (en en este caso, un objeto), luego lo trata como si hubiera pasado el modelo y, por lo tanto, no llama al gancho del modelo.

Los documentos de la API probablemente podrían funcionar con un ejemplo de pasar ID en lugar de modelos completos: http://emberjs.com/api/classes/Ember.Route.html#method_transitionTo

Espero que tenga sentido

Tiene sentido ahora. Mi pregunta instintiva inicial después de su comentario fue ¿cómo se pasan múltiples parámetros? Pero parece que simplemente los pasa como argumentos separados.

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

Eso funciona bien para mi.

Pregunta aquí, si tienes una ruta con subrutas, todas con segmento dinámico:
p.ej
this.route ('organización', {ruta: 'organizaciones /: id_organización'}, función () {
this.route ('proyecto', {ruta: 'proyectos /: project_id'}, function () {
this.route ('pantalla', {ruta: 'pantallas /: id_pantalla'});
});
y estoy en otra ruta, por ejemplo, ruta de autenticación. Cuando voy a this.transitionTo ('organization.project.screen',
{organization_id: 'grege23-234-4c3e-96fe-234423'},
{project_id: '234234-23423-4b99-a492-234'},
{screen_id: '34534-48f4-471d-ad17-3'45});
No veo nada, porque el modelo no está cargado.
¿Cómo pudiste ir por este?

¿Fue útil esta página
0 / 5 - 0 calificaciones