Enrutamiento dinámico de Ember.js

Estoy tratando de crear una aplicación con Ember.js, con enrutamiento, roles, inicio de sesión, cierre de sesión y todo. Mi problema en este momento es que no puedo entender cómo lidiar con el enrutamiento dinámico.

Lo que necesito es poder usar una ruta para la navegación de la barra lateral.

Cuando el usuario inicie sesión, accederá a la vista del panel. Digamos que hacen clic en el menú Publicar a la izquierda, luego verán una vista de publicaciones. Quiero tratar con estos en la misma ruta, algo así como /:module/.

module: Ember.Route.extend({
   route: '/admin/:module/',
   doLogout: Ember.Route.transitionTo('login'),
   connectOutlets: function (router) {
      "use strict";
      router.get('applicationController').connectOutlet('sidebar', 'sidebar');
      router.get('applicationController').connectOutlet('toolbar', 'toolbar');
   }
})

Aquí es donde necesito un poco de ayuda. ¿Cómo funciona exactamente el enrutamiento dinámico? Probablemente lo único que encontré hasta ahora es la esencia de @wycats en Routing aquí, pero no pude resolverlo desde allí: https://gist.github.com/2728699

preguntado el 28 de agosto de 12 a las 08:08

no lo hice Lo hare ahora. Desde que hice la pregunta, descubrí que tengo que usar serializar/deserializar, pero simplemente no tuve el tiempo necesario para probarlo. -

Volví a esto, intenté ordenar las cosas durante unas horas, pero sin éxito. Terminé renunciando al enrutamiento dinámico combinado con puntos de venta con nombre, porque no pude hacerlo funcionar. Si alguien tiene un ejemplo así, sería bienvenido. -

1 Respuestas

Aquí hay una parte simplificada de un enrutamiento dinámico que utilicé:

myroute : Em.Route.extend({
    route : '/myroute/:tid', //tid is same as index of Object
    deserialize: function(router, params) {
        return App.router.getPath('myController.content').objectAt(parseInt(params.tid));
                    //you can use some other parameters than tid and find the coresponding element
        },
    serialize: function(router, context) {
        return {
        tid: App.router.getPath('myController.content').indexOf(context)
        }
        },
    connectOutlets: function(router, context) {
        var currentController = router.get('currentController');
        currentController.connectOutlet({
            name : 'controllername',
            outletName : 'outletname',
            context: context
            }); 
        },
    index: Em.Route.extend({
        route : '/'
        })
    }),

Aquí hay una Gist que explica los códigos fuente actuales de Connect Outlets para obtener las últimas actualizaciones https://gist.github.com/3606155

Respondido el 03 de Septiembre de 12 a las 02:09

Gracias por eso, lo intentaré de nuevo en algún momento y volveré aquí con mi historia. - Eduardo Moldován

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.