2012-06-22 11 views
5

Muszę dopasować ścieżkę do adresu URL. Ścieżka musi być końcem adresu URL po danym wzorze, ale nie mogę tego zrobić. Ember.js zawsze kończy się dopasowywaniem do następnego ukośnika.Routing Ember.js: dopasowanie końca adresu 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' 
        }) 
       }) 
      }) 
     }) 
    }) 
}); 

Z tego routera:

  • /myrepo/files/ dopasuje root.repo.files.index
  • /myrepo/files/README dopasuje root.repo.files.sub z path=README
  • /myrepo/files/folder/README dopasuje root.repo.files.sub i przekierowanie mnie do /myrepo/files/folder/ ponieważ path=folder zamiast path=folder/README

Jak mogę ustawić, aby podrzędny pasował do końca adresu URL z :path, nawet jeśli jest w nim ukośnik, czy nie?

Odpowiedz

3

Ta funkcja została committed do repozytorium ember.js za master gałęzi. Nie ma go w wersji 1.0.0-pre2, więc dopóki nie zostanie wydana nowa wersja, musisz albo build Ember.js yourself albo znaleźć wersję wcześniej zbudowaną.

Podstawowe Wykorzystanie

Zamiast poprzedzając swój dynamiczny segment z dwukropkiem :, użyć gwiazdki *. Twoja trasa będzie miała składnię podobną do:

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

Segment ścieżki będzie dostępny tak, jakby był normalną właściwością dynamiczną. Jednak będzie zawierać wszystko po adresie files/, w tym ukośniki.