Ember路由器中是否可能有(不确定数量的)可选网段?

时间:2018-11-30 12:50:18

标签: ember.js ember-router

我想从阵列中的Ember路由器收集额外的段。 这是一个虚构的path,用以说明我的意思:

this.route('group', {path: 'group/:group_id(/:segments[])*'}, function() {

是否可以使用这样的请求:

GET /group/123/some/path/segments

并将它们收集在一个阵列中吗?

group.id = 123
segments = ['some', 'path', 'segments']

或者有什么方法可以定义可选段,所以我可以添加很多并手动收集它们?

1 个答案:

答案 0 :(得分:1)

在后台,路由器正在使用route-recognizer确定路由。有star-segments

的概念
router.add([{ path: "/pages/*path", handler: page }]);

result = router.recognize("/pages/hello/world");
result === [{ handler: page, params: { path: "hello/world" } }];

这似乎是您要寻找的东西

请注意,这是我通常的404方法:

Router.map(function() {
  ...very last route
  this.route('not-found', { path: "/*path"});
});

routes / not-found.js:

export default Route.extend({
    model(params){
        return params.path
    }
});

not-found.hbs

404: /{{model}} not found!

使得/foo/bar产生:404: /foo/bar not found!