2012-06-22 11 views
5

Ich muss einen Pfad in eine URL übereinstimmen. Der Pfad muss das Ende der URL nach einem bestimmten Muster sein, aber ich kann es nicht tun. Ember.js endet immer mit dem nächsten Schrägstrich.Ember.js Routing: Übereinstimmung Ende der 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' 
        }) 
       }) 
      }) 
     }) 
    }) 
}); 

Mit diesem Router:

  • /myrepo/files/ passt auf root.repo.files.index
  • /myrepo/files/READMEroot.repo.files.sub mit path=README
  • /myrepo/files/folder/README übereinstimmen wird root.repo.files.sub passen und wird mich da path=folder stattdessen /myrepo/files/folder/ Umleiten von path=folder/README

Wie kann ich eine Unterroute mit dem Ende der URL mit :path übereinstimmen, selbst wenn ein Schrägstrich vorhanden ist oder nicht?

Antwort

3

Diese Funktionalität committed auf die Ember.js Repository master Zweig war. Es ist nicht in der 1.0.0-pre2 Build, also bis eine neue Version veröffentlicht wird, müssen Sie entweder build Ember.js yourself oder finden Sie eine vorgefertigte Version.

Grundsätzliche Verwendung

Statt prefixing dynamisches Segment mit einem Doppelpunkt :, ein Sternchen *. Ihre Route verwendet eine ähnliche Syntax wie:

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

Das Pfadsegment wird verfügbar sein, als wäre es eine normale dynamische Eigenschaft. Es enthält jedoch alles nach files/ in der URL, einschließlich Schrägstriche.