Algo que he notado recientemente con Ember Router es que solo permite navegar en las rutas de hoja (rutas sin rutas secundarias).¿Por qué Ember Router solo permite navegar a las rutas de hoja?
Ahora, a menos que haga las cosas incorrectamente, esto parece un error/error en el diseño.
Tomemos, por ejemplo, algo como esto:
tengo una colección de proyectos, cada proyecto tiene muchos colaboradores, con esto quiero construir una interfaz de usuario con un diseño de 3 columnas (algo así como su cliente de correo de escritorio estándar) donde a la izquierda tengo una lista de proyectos, al hacer clic en un proyecto, la columna del medio muestra una lista de colaboradores, y al hacer clic en un colaborador, carga sus detalles en la columna de la derecha.
Ahora con el enrutamiento quiero navegar a /projects/1
al hacer clic en un proyecto y al /projects/1/collaborators/23
al hacer clic en un colaborador.
Aquí es un router que ilustra la primera parte de la ruta anidada:
App.reopen(
Router: Ember.Router.extend(
enableLogging: true
location: 'hash'
root: Ember.Route.extend(
index: Ember.Route.extend(
route: '/'
redirectsTo: 'projects'
)
projects: Ember.Route.extend(
# This route is not routable because it is not a leaf route.
route: '/projects'
connectOutlets: (router) ->
# List projects in left column
router.get('applicationController').connectOutlet('projects', App.projects)
show: Ember.Route.extend(
# This route is routable because it is a leaf route.
route: '/:project_id'
connectOutlets: (router, project) ->
# Render the project into the second column, which actually renders
# a list of collaborators.
router.get('projectsController').connectOutlet('project', project)
)
)
)
)
)
Como verá Ember no llama updateRoute (conjunto de la URL) hasta que la transición a root.projects.show
debido a esta línea de https://github.com/emberjs/ember.js/blob/master/packages/ember-routing/lib/routable.js#L81
¿Alguien más ha hecho algo como esto? ¿Hay una mejor manera de diseñar esto?
Gracias Bradley, eso parece hacer el truco. – Ivan
Muy inteligente. Gracias por el consejo. – nembleton
@BradleyPriest Tengo una [pregunta] (http://stackoverflow.com/questions/11377498/ember-js-crud-scenarios-specifying-view-from-within-a-route) sobre esto. Me resulta difícil entender cómo usar Ember.Router con escenarios CRUD. ¿Podrías echar un vistazo? – MilkyWayJoe