2012-06-22 16 views
5

Necesito hacer coincidir una ruta en una URL. La ruta tiene que ser el final de la URL después de un patrón determinado, pero no puedo hacerlo. Ember.js siempre termina igualándose con la siguiente barra inclinada.Ember.js Enrutamiento: coincidencia al final de la url

var router = Ember.Router.extend({ 
    location: 'history', 
    enableLogging: true, 
    root: Ember.Route.extend({ 
     index: Ember.Route.extend({ 
      route: '/' 

      repo: Ember.Route.extend({ 
       route: '/:repo_id', 

       index: Ember.Route.extend({ 
        route: '/' 
       }), 

       files: Ember.Route.extend({ 
        route: '/files', 

        index: Ember.Route.extend({ 
         route: '/' 
        }), 

        sub: Ember.Route.extend({ 
         route: '/:path' 
        }) 
       }) 
      }) 
     }) 
    }) 
}); 

Con este router:

  • /myrepo/files/ coincidirá root.repo.files.index
  • /myrepo/files/README coincidirá root.repo.files.sub con path=README
  • /myrepo/files/folder/README coincidirá root.repo.files.sub y me reencaminar a /myrepo/files/folder/ porque path=folder en lugar de path=folder/README

¿Cómo puedo hacer que la ruta secundaria coincida con el final de la URL con :path incluso cuando hay una barra en ella o no?

Respuesta

3

Esta funcionalidad ha sido committed-master rama del repositorio Ember.js. No está en la compilación 1.0.0-pre2, por lo tanto, hasta que se lance una nueva versión, necesitará build Ember.js yourself o buscar una versión precompilada.

Uso básico

En lugar de prefijar su segmento dinámico con dos puntos :, utilice un asterisco *. Su ruta usará una sintaxis similar a:

Ember.Route.extend({ 
    route: '/:repo_id/files/*path' 
}); 

El segmento de ruta estará disponible como si fuera una propiedad dinámica normal. Sin embargo, incluirá cualquier cosa después de files/ en la URL, incluidas las barras inclinadas.

Cuestiones relacionadas