我需要将路径匹配到URL。在给定模式之后,路径必须是URL的结尾,但我不能这样做。 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.sub
与path=README
/myrepo/files/folder/README
将与root.repo.files.sub
匹配,并会将我重新路由至/myrepo/files/folder/
,因为path=folder
代替path=folder/README
如果子路由与:path
相匹配,我怎样才能使URL匹配?#/ p>
答案 0 :(得分:3)
此功能已经committed到Ember.js存储库的master分支。它不在1.0.0-pre2
版本中,因此在发布新版本之前,您需要build Ember.js yourself或找到预建版本。
请使用星号:
,而不是使用冒号*
作为动态细分前缀。您的路线将使用类似于以下语法:
Ember.Route.extend({
route: '/:repo_id/files/*path'
});
路径段将可用,就像它是正常的动态属性一样。但是,它将包含URL中files/
之后的任何内容,包括斜杠。
答案 1 :(得分:1)
Ember.js Github Tracker上有一个未解决的问题: https://github.com/emberjs/ember.js/issues/1451