2012-06-22 90 views
5

我需要將路徑匹配到URL中。路徑必須是給定模式後URL的末尾,但我無法做到。 Ember.js始終將其匹配到下一個斜槓。Ember.js路由:匹配網址結尾

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' 
        }) 
       }) 
      }) 
     }) 
    }) 
}); 

有了這個路由器:

  • /myrepo/files/將匹配root.repo.files.index
  • /myrepo/files/README將匹配root.repo.files.subpath=README
  • /myrepo/files/folder/README將匹配root.repo.files.sub,將重新路由我/myrepo/files/folder/,而不是因爲path=folderpath=folder/README

即使有斜槓進入,我如何才能讓子路徑與URL的末尾匹配:path

回答

3

此功能已committed到Ember.js庫的master分支。它不在1.0.0-pre2構建中,所以在發佈新版本之前,您需要build Ember.js yourself或查找預構建版本。

基本用法

而不是用冒號:前綴動態段,使用星號*。您的路線將使用類似於以下語法:

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

路徑段將可用,就像它是一個正常的動態屬性一樣。但是,它將包含URL中的files/之後的所有內容,包括斜槓。